Where who wants to meet someone

SOLID 원칙(객체 지향 설계) 본문

Apple Developer/iOS(Swift)

SOLID 원칙(객체 지향 설계)

Lust3r 2023. 7. 20. 17:02
728x90

SOLID | wikipedia 

 

SOLID (객체 지향 설계) - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. -->

ko.wikipedia.org

- 로버트 마틴이 2000년대 초반 명명한 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙을 마이클 페더스가 두문자어 기억술로 소개한 것.

 

- 프로그래머가 시간이 지나도 유지 보수와 확장이 쉬운 시스템을 만들고자 할 때 이 원칙들을 함께 적용할 수 있음.

 

- SOLID 원칙들은 소프트웨어 작업에서 프로그래머가 소스 코드가 읽기 쉽고 확장하기 쉽게 될 때까지 소프트웨어 소스 코드를 리팩터링 하여 코드 냄새(컴퓨터 프로그래밍 코드에서 더 심오한 문제를 일으킬 가능성이 있는 소스 코드의 특징을 가리킴)를 제거하기 위해 적용할 수 있는 지침.

 

- 이 원칙들은 애자일 소프트웨어 개발과 적응적 소프트웨어 개발의 전반적 전략의 일부.


1. SOLID 원칙

두문자 약어 개념
S SRP 단일 책임 원칙(Single Responsibility Principle)
: 한 클래스는 하나의 책임만 가져야 한다.
O OCP 개방-폐쇄 원칙(Open/Closed Principle)
: 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.
L LSP 리스코프 치환 원칙(Liskov Substitution Principle)
: 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
I ISP 인터페이스 분리 원칙(Interface Segregation Principle)
: 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
D DIP 의존관계 역전 원칙(Dependency Inversion Principle)
: 프로그래머는 추상화에 의존해야지 구체화에 의존하면 안된다.(의존성 주입은 이 원칙을 따르는 방법 중 하나)

추가적으로 읽어보면 좋을 정리글: https://soojin.ro/blog/solid-principles-in-swift

 

스위프트로 다시보는 객체지향 프로그래밍: 피해야할 코딩 습관 · Soojin Ro

배경 컴퓨터와 회화(painting)를 전공했고 꽤 성공한 누군가가 프로그래머는 과학자보다 화가와 공통점이 더 많다고 했다. 정말로, 프로그래밍을 잘하려는 노력을 하다보면 과학보다는 경험적으

soojin.ro

https://dongminyoon.tistory.com/49

 

[SWIFT] Swift SOLID 원칙

안녕하세요 오늘은 SOLID 원칙에 대해 정리를 해보려고 합니다. 근데, 이것을 Swift 언어에 접목시켜서 이해해보고 작성해보겠습니다 🙌 SOLID란? SOLID 원칙이란 객체지향 설계에 더 좋은 아키텍쳐

dongminyoon.tistory.com


2. 애자일 소프트웨어 개발

위에 나온 개념 중, 애자일은 무엇이고 코드 재사용이란 무엇일까

애자일 소프트웨어 개발 | wikipedia

 

애자일 소프트웨어 개발 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 애자일 소프트웨어 개발(Agile software development) 혹은 애자일 개발 프로세스는 소프트웨어 엔지니어링에 대한 개념적인 얼개로, 프로젝트의 생명주기동안 반복적

ko.wikipedia.org

  • 프로젝트의 생명주기동안 반복적인 개발을 촉진
  • 계획이 없는 방법론의 경우 앞으로의 일을 예측하기 힘들고 효율적이지 못하다는 점에서 취약점을 가지고 있으며,
    계획에 너무 의존하는 경우는 그 형식적인 절차를 따르는 데 필요한 시간과 비용을 무시할 수 없으며 전체적인 개발의 흐름 자체를 느리게 하는 단점이 있음
  • 애자일은 위 두 개발 방법 사이에서 타협점을 찾고자 하는 방법론
  • 문서를 통한 개발 방법이 아닌 실질적인 코딩을 통한 방법론(less document-oriented, code-oriented)
    과거의 방법론과는 다르게 앞을 예측하며 개발을 하지 않고, 일정한 주기를 가지고 끊임없이 프로토 타입을 만들어내며 그때 그때 필요한 요구를 더하고 수정하여 하나의 커다란 소프트웨어를 개발해 나가는 adaptive style
  • 어느 특정 개발 방법론을 가리키는 말이 아닌, 애자일(좋은 것을 빠르고 낭비 없게 만드는 것) 개발을 가능하게 해주는 다양한 방법론 전체를 일컫는 말.

3. 코드 재사용

코드 재사용 | wikipedia

 

코드 재사용 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 코드 재사용(code 再使用) 또는 소프트웨어 재사용(software 再使用)은 기존의 소프트웨어 또는 소프트웨어 지식을 활용해, 새로운 소프트웨어를 구축하는 일이다.

ko.wikipedia.org

  • 재사용 가능한 소프트웨어나 소프트웨어 지식은 재사용 가능한 자산.
    자산에는 설계, 요구명세, 검사, 아키텍처 등도 포함된다.
  • 잘 알려져 있는 재사용 가능 자산은 코드.
  • 라이브러리는 추상화가 좋은 예. 프로그램의 일부를 재사용가능하게 하기 위해서 내부에 추상화 포인트를 작성하거나 자기 부담으로 사용하기 위해 커스텀 라이브러리를 만들거나 한다. 소프트웨어를 보다 재사용하기 쉽게 하는 특성을 모듈성, 저결합도, 고응집도, 캡슐화, 관심의 분리 등으로 부름.
  • 객체지향 프로그래밍도 재사용을 빠르고 용이하게 하기 위해 프로그래밍 정식 절차의 일부로서 행해진 연구중 하나.
  • 재사용의 형태
    • 편의적 재사용(opportunistic reuse): 프로젝트를 시작할 때 재사용 가능한 컴포넌트가 있는지 찾아보고 재사용한다.
    • 계획적 재사용(planned reuse): 컴포넌트를 차후에 재사용 가능하도록 전략적으로 설계해 나간다.
    • 편의적 재사용 - 내부 재사용(internal reuse): 팀 내에서 만든 컴포넌트를 재사용한다. 어디까지나 편의상이며 계획적인  것이 아니기 때문에 인터페이스의 조정 등에 추가적인 비용이 발생할 수 있다.
    • 편의적 재사용 - 외부 재사용(external reuse): 서드파티에서 만든 컴포넌트를 구하여 사용한다. 유상인 경우 조달비용을 자신이 직접 개발할 때 드는 비용의 20% 이하로 잡는 것이 일반적. 조달한 컴포넌트를 학습하여 활용하는 데 걸리는 시간도 고려해야 한다.

'Apple Developer > iOS(Swift)' 카테고리의 다른 글

[Xcode Cloud] Environment Variables로 API Key 넣어주기  (0) 2024.03.22
[Xcode] no scheme 문제 해결  (0) 2024.02.18
[들꽃] 개인정보 처리방침  (0) 2023.11.30
Swift ARC (WWDC2021)  (0) 2023.08.08
Render Loop, Life Cycle  (0) 2023.07.21