SOLID? 객체 지향 프로그래밍 및 설계의 다섯가지 기본 원칙 왜? 유지 보수와 확장이 쉬운 시스템을 만들고자 SRP, Single Responsibility Principle 단일 책임 원칙 객체는 단 하나의 책임만 가져야 한다. 클래스는 그 책임을 완전히 캡슐화해야 한다. 책임 - 변경하려는 이유 예) 보고서를 편집하고 출력하는 모듈 이 모듈은 두 가지 이유로 변경될 수 있다. 1. 보고서의 내용 (실질적) 2. 보고서의 형식 (꾸미기) 따라서 분리된 클래스나 모듈로 나누어야 한다. 다른 시기에 다른 이유로 변경되어야 하는 두 가지를 묶는 것은 나쁜 설계일 수 있다. OCP, Open-Closed Principle 개방-폐쇄 원칙 확장에 대해 열려 있어야 하고, 수정에 대해서 닫혀 있어야 한다. 개..
스위프트의 String은 값 타입입니다. 새로운 String 값을 생성하면 값이 함수 또는 메서드로 전달되거나 상수 또는 변수에 할당될 때 복사됩니다. 각각의 경우 기존의 값이 아닌 새로운 스트링 값이 생성돼서 전달됩니다. 스위프트 컴파일러는 실제로 필요한 경우에만 값을 복사해서 퍼포먼스를 높여줍니다. String 요소에 접근하기 스트링은 사람이 읽을 수 있는 확장된 문자소 무리의 컬렉션 입니다. 여러 유니코드 스칼라 값으로 "é", "김", "🇮🇳" 같은 여러 문자는 유니코드 스칼라 값으로 구성될 수 있습니다. 이 스칼라 값은 유니코드 바운더리 알고리즘에 의해 결합됩니다. 문자열의 각 요소들은 Character 인스턴스로 표시됩니다. 예를 들어 긴 문자열에서 첫 번째 단어를 찾기 위해 공백을 찾고 그 ..
WithLatestFrom 첫 번째 Observable에서 아이템이 방출될 때마다 두 번째 Observable의 최신 아이템과 결합해서 방출 CombineLatest 어떤 Observable이든 아이템이 방출될 때마다 다른 Observable의 최신 아이템과 결합해서 방출 Zip Observable의 방출된 아이템이 다른 Observable의 아이템과 짝을 이루면 결합해서 방출 참고 아래 사이트에서 직접 마블을 움직여보는게 이해가 가장 빠르다! https://rxmarbles.com/#withLatestFrom http://reactivex.io/documentation/operators/combinelatest.html
디자인패턴의 목적 기술부채 최소화 재사용 및 지속 가능 Model - View - ViewModel ViewController의 역할을 축소 할 일을 명확히 구분 -> 각 요소가 독립적 -> 테스트 용이 Model Model은 View 레이어와 소통하지 않음 ViewModel에 데이터 전달해줌 View ViewController는 View 레이어에 속함 ViewController는 View와 ViewModel을 가지고 있음 View는 Binding을 통해 화면을 표시함 ViewModel Model을 가지고 있음 ViewModel은 중계자 역할 Model에 데이터 요청