일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- combine
- Refactoring
- 리펙토링
- tableView
- collectionview
- ribs
- swift documentation
- Xcode
- 리펙터링
- HIG
- RxCocoa
- ios
- Protocol
- UITextView
- clean architecture
- uiscrollview
- swiftUI
- MVVM
- 클린 코드
- map
- UICollectionView
- uitableview
- 리팩토링
- 애니메이션
- SWIFT
- Observable
- rxswift
- Clean Code
- Human interface guide
- 스위프트
- Today
- Total
목록Clean Architecture/Clean Architecture 기초 (13)
김종권의 iOS 앱 개발 알아가기
객체 지향 프로그래밍 3가지 요소를 반드시 지원하는 프로그래밍 방법 캡슐화(encapsulation), 상속(inheritance), 다형성(polymorphism), 다형성을 이용한 의존성 역전(dependency inversion) 사실생 캡슐화, 상속은 객체 지향 언어가 탄생하기 전부터 C에서도 존재 객체 지향 프로그래밍이란 다형성을 이용하여 시스템의 모든 소스 코드 의존성에 대한 절대적인 제어 권한을 획득할 수 있는 능력 (모듈의 독립성, 배포 독립성) 캡슐화 (= 은닉화) 데이터와 함수가 응집력 있게 구성된 집단을 서로 구분 짓는 선을 그을 수 있게끔 하는 개념 사용하는 쪽에서 멤버 변수들의 정보를 모르고 있어야 완전한 캡슐화 private, public으로 표현: 사용쪽에서 특정 구조체의 멤버..
절차 지향 프로그래밍 (Procedural programming) 주로 goto 문장이 주를 이루는 프로그래밍 현재의 프로그래밍은 모두 `구조적 프로그래밍` 자바의 경우 break, goto문이 있지만 이 제어흐름을 아무 제약 없이 직접 전환될 수 있던 과거의 포트란과 코볼같은 언어와는 달리 goto문을 함수 안으로 한정시키는게 대부분 구조적 프로그래밍 (structured programming) 구조적 프로그래밍의 탄생: 수학적으로 접근 (순차 구문-열거법, 분기-열거법, 반복-귀납법) 기능적 분해: 구조적 프로그래밍을 통해 모듈을 증명 가능한 떠 작은 단위로 재귀적으로 분해가 가능 -> 기능적으로 분해 가능하다는 의미 문제 접근방법: 큰 문제 -> 고수즌의 기능들로 분해 -> 이들 각 기능은 저수준의..
구조적 프로그래밍 (structured programming) `구조적 프로그래밍`이란 제어흐름(if/then/else, do/while/until)의 직접적인 전환에 대해 규칙을 부과하는 것 객체 지향 프로그래밍 (object-oriented programming) `객체 지향 프로그래밍`이란 제어흐름의 간접적인 전환에 대해 규칙을 부과하는 것 구조적 프로그래밍보다 2년 먼저 등장 ALGOL언어에서 stack의 frame을 heap으로 옮기면 함수 호출이 반환된 이후에도 함수에서 선언된 지역 변수가 오랫동안 유지될 수 있음을 발견 -> 이러한 함수가 클래스의 '생성자'로 지정 / 지역 변수는 인스턴스 변수로 / 중첩 함수는 메서드로 / 함수 포인터를 특정 규칙에 따라 사용하는 과정을 통해 다형성 등장 ..
행위(behavior) 요구사항을 기계에 구현하고 버그를 수정하는 일이 개발자의 모든 일이 아님을 깨닫는게 중요 개발자를 고용하는 이유는 이해관계자를 위해 기계가 수익을 창출하거나 비용을 절약하기 위함 곧 이해관계자가 기능 명세서나 요구사항 문서를 구체화할 수 있도록 돕는 임무를 포함 아키텍처(architecture) 핵심은 'sofrware': 부드러운(soft) 제품(ware) 소프트웨어는 부드러움을 지니도록 구성 - 기계의 행위를 쉽게 변경할 수 있도록 하기 위함 부드럽다는 의미는 변경하기 쉬워야하며 이해관계자가 기능에 대한 생각을 바꾸면 변경사항을 간단하고 쉽게 적용할 수 있어야함 변경사항을 적용하는 데 드는 어려움은 변경되는 형태와는 관련이 없어야하며, 범위에 비례해야함 ex) 잘못개발 사례: ..
"빨리 가는 유일한 방법은 제대로 가는 것이다." - 로버트 C. 마틴 (Rovert C. Martin) 설계(design)와 아키텍처(architecture)의 차이 결론적으로 의미 차이가 없음 아키텍처(architecture): 디테일한 것보다는 전체적인 것 설계(design): 디테일한 것에 초점 ex) "집"의 아키텍처: 집의 형태, 외관, 방의 배치 - 이런 것들은 모두 설계(design), 즉 아키텍처(architecture)는 설계(design)로 표현할수 있으므로 같은 의미 소프트웨어 아키텍처의 목표 필요한 시스템을 만들고 유지보수하는 데 투입되는 인력을 최소화 하는것 * 참고: Clean Architecture