Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- persistentStoreCoordinator
- 트레일링 클로저
- NSManagedObject SubClass
- NSPredicates
- expensive operation
- Raw value and Associated value
- 다익스트라 이해
- Swift LinkedList
- iOS Static Library 사용하는방법
- CoreData Concurrency
- 일급 객체
- Clean swift
- 스위프트 클로저
- Swift 고차함수
- Swift closure
- codability
- dateFormatter
- CoreData Stack
- leetcode #01
- LightWeight Migration
- NSSortDescriptor
- Swift
- Java
- 2022 부스트캠프
- Persistent store Coordinator
- Associated Value
- CoreData Filter
- CoreData
- 1009번
- iOS Static Library
Archives
- Today
- Total
하루를살자
Clean code 본문
Uncle Bob 은 "어떠한 건물의 설계도면만 봐도 이건물의 기능을 알수 있어야한다" 라는 말을 하면서 실제 건축학 으로부터 영감을 받아 소프트웨어 개발 에 접목시켰다고한다.
이 건축 패턴을 "Clean Architecture" 라고 명하였고, 이 패턴을 사용하면 개발자들은 새로운 기능을 추가하거나, 버그를 고칠때 더이상 자신들이 작성한 얽히고 설킨 코드를 되짚어가며 시간을 낭비할 필요가 없어질것 이라고 하였다.
도대체 어떻게 그런 설계를 할수 있지? 라는 의문이 드는데, Uncle Bob 은 clean architecture 의 핵심 포인트를 아래와같이 설명한다.
- Framework 로 부터 독립적 이여야 한다.
- 자신이 만든 시스템은 라이브러리 를 하나의 도구로 사용해야한다. 절대로 주어진 라이브러리의 기능에 의지하고 있으면 안된다. 자신의 시스템의 한계가 사용하고 있는 라이브러리의 한계 가되어서는 안되기 때문이다.
- 테스트가 가능해야한다.
- 비즈니스 로직들은 외부 인터페이스(db / server) 의 간섭없이 테스트가 가능해야한다.
- 인터페이스 로 부터 독립적 이여야 한다.
- 인터페이스는 시스템을 많이 건드리지않고 손쉽게 바뀔수 있어야한다. (ex: 앱 화면에 비추는 데이터들을 콘솔에 찍기 위해 비즈니스로직 를 바꿀 필요가 없어야한다)
- 데이터 베이스 로 부터 독립적 이여야 한다.
- 비즈니스 로직은 특정한 DB 와 강하게 결합되어 있지 않아야한다.
앞으로 Clean Architecture 를 공부하고 iOS 에서 Clean Architecture + MVVM 를 사용하는 방법도 있다고 해서 포스트를 올려볼 예정이다.
https://rubygarage.org/blog/clean-swift-pros-and-cons#article_title_1
https://www.raywenderlich.com/29416318-getting-started-with-the-vip-clean-architecture-pattern
'Architecture' 카테고리의 다른 글
[iOS] MVVM + Clean Architecture [3-1] - Presentation Layer 적용 (2) | 2022.09.12 |
---|---|
[iOS] MVVM + Clean Architecture [3] - Presentation Layer (0) | 2022.08.22 |
[iOS] MVVM + Clean Architecture [2] - Domain Layer (0) | 2022.08.16 |
[iOS] MVVM + Clean Architecture [1] (0) | 2022.08.15 |
Comments