왜 디자인 패턴을 중요시 여기는가?
아직 디자인 패턴에 대해 문외한이지만 디자인 패턴을 하나하나 공부해보기 전에 "왜 디자인패턴을 중요시 여기는건가?" 라는 것을 공부하는 것이 맞다고 생각하였습니다.
그래서 여러 곳을 참고하던중 좋은 블로그를 발견하여 정리해보려합니다.
디자인 패턴이 프로그램을 작성할 때 필요한 이유와, 적용 후 효과들을 먼저 알아보고자 합니다.
여러 디자인 패턴이 있지만, 꼭 디자인 패턴에 맞게 코드를 짜지않았다고, 프로그램이 동작을 하지않거나, 제기능을 하지 못하는 것은 아닙니다.
하지만 이같은 프로그램은 가독성이 현저히 떨어지고, 디버깅과 테스팅, 유지보수 등에 많은 비용이 필요할 것입니다.
그렇다면 좋은 구조의 특징은 무엇일까요?
Balanced distribution
각 객체들의 역할이 확실하고, 이러한 역할들의 책임이 균형있게 분배되어 있는지?
즉, 각 객체들이 독립적인지? 의존성이 높진 않은지?
이러한 역할 분배는 코드의 복잡도를 낮추고, 이로써 개발자의 "생각 비용"을 낮출 수 있다.
- 유지 보수 및 테스팅 비용이 낮아진다.
SOLID 원칙의 Single responsibility 에 기반한다.
- 하나의 객체는 하나의 책임(역할)을 가진다는 원칙, 즉 단일 책임
Testability
테스트를 할 수 있는지?
- 테스팅은 개발자가 런타임 중 이슈를 찾아내기위해 필요한 단계
Ease of use
사용하긴 쉬운지?, 유지보수 비용이 낮은지? (유지 보수가 쉬운지?)
코드가 적은 프로그램이 가장 최고의 프로그램, 즉 유지보수가 쉬운 프로그램
가독성, 재사용성을 따지는 것
Distribution
위의 Distribution은 App에서 크게 세가지로 분류됩니다.
- Models: 프로그램에서 사용되는 데이터를 조작하고, 이러한 데이터를 담당하는 역할
- Views: 눈에 보여지는 부분을 담당하는 역할, IOS에선 "UI" 접두어가 붙은 모든 것
- Controller/Presenter/ViewModel: Model과 View사이의 중재자로, 일반적으로 View를 통해 발생한 사용자의 액션을 다루고, 이 액션에 따른 행동(메소드)을 통해 Model에 값 업데이트 등을 요청하며, 업데이트된 Model의 값에 따라 View를 업데이트해주는 역할
이렇게 역할을 분배하면 가독성이 좋아지고, 재사용성이 좋아지며, 독립적으로 테스트할 수 있게 됩니다.
'iOS > Swift' 카테고리의 다른 글
Swift) UIViewController Life Cycle (0) | 2022.02.12 |
---|---|
Swift) MVC (0) | 2022.02.12 |
Swift) Struct vs Class (0) | 2022.02.12 |
Swift) Notification, NotificationCenter (0) | 2022.02.12 |
Swift) Singleton (0) | 2022.02.12 |
댓글