본문 바로가기

iOS

나만의 코딩 스탠다드 계속 업데이트 할 것이다.(Siwft, Objectvie C, iOS, xcode)

일단 swiftLint가 있던데..

사실 그런걸로 코드가 잘 읽혀지고 아니고는 아닌거 같다. 그건 그 사람 스타일인거 같고..

우리가 남의 코드를 볼때 어렵다고 생각되는건..나와 다른 패턴, 아키텍처가 다른 큰 부분간다. 

일단 나만의 기준을 가지고 개발을 하며 회사에 맞게 유연하게 맞춰가는게 나은거 같다. 

일단 그냥 생각나는 대로 적었지만..차근착은 다듬을 것이며 추가와 삭제도 할 것이다. 

 

 

데이터

싱글톤 패턴 : 앱이 살아 있는 동안만 사용하고 휘발성이 있는 경우, 서버에서 계속적으로 변할 경우, 유저의 프로필, 기타 변하는 데이터 정보

데이터 이동

옵저버 패턴 : 한번의 이벤트로 여러곳에서 정보가 변경 될 경우, 프로필 사진, 결제 정보가 바뀔시 리스트 정보들

델리게이트 패턴 : 어떤 클래스에서 다른 클래스에 이벤트를 대신 처리 할때, 이 경우는 특히 버튼 클릭시 동기적인 이벤트에는 이런 패턴을 사용

클로저,블록 : 비동기적인 이벤트 예를 들면 통신과 같이 호출 후 즉각적인 대응이 없을 수 있는 경우 사용

아키텍처

MVC : 정말 정말 간단한 화면, 이벤트가 하나인 경우, 통신조차도 필요가 없는 경우..는 무조건 간단히 이걸 쓴다.

MVP : 기본적으로 사용하는 아키텍처로..VIewController는 뷰 Protocol 상속, Presenter는 Presenter Protocol 사용, 네트워크 통신 및 모델 세팅을 해줌, ViewController 와 Presenter는 Protocol 함수를 통하여 서로 1:1로 매칭, Protocol로 서로 통신을 하기 때문에 View의 경우 서버 API가 나오지 않았을 경우 덤프 데이터를 가진 PresenterProtocol을 상속받은 테스트 presneter로 개발,

viewProtocol은 이벤트에 대한 함수, Presenter의 경우 뷰에서 동작할 함수 및, 네트워크, 모델에 관련된 정보를 함수로 제공

MVVM : 뷰가 여러개의 모델을 조합해서 보여질 경우, 사용 경험이 없음

디자인

Storyboard 기반으로 디자인

Storyboard의 경우 다른 개발자와 충돌이 자주 일어날 수 있으므로 작게 여러개 만든다.

cell 같은 경우는 기본적으로 xib로 개발, 왜나하면 한 화면에 하나만 사용하는 cell이 있는 경우가 있지만 대부분 다른 화면에서도 공통적으로 사용하기 때문에 디자인 변경시 관리가 편함

color : ios13부터는 다크모드를 대응해야 함. 그래서 color assets를 만들고 color extention으로 관리

네트워크

swift는 alamofire를 wrapping 하여 기본적으로 header 정보 및 네트워크 fail때 wrapping한 곳에서 1차 처리 (fail이지만 유저에게는 알려주지 않아도 되는 오류콛가 있기에..), 그리고 그 api를 사용하는 부분에서 2차 처리

if let, guard let

일단 guard let을 우선시 사용, 위에서 부터 사용해서 에러 처리 및 코드 보기에 깔끔함, 물론 위에서 오류가 없는 경우 밑에서도 guard let 의 변수를 사용 할 수 있다.

if let읜 간단히 사용할 때나 최대한 2뎁스는 안들어가게 사용, 특히 if let aa , let bb = aa.aa , let cc = bb.aa 이런식을 최대한 자제를 함..차라리 옵셔널 체이닝을 사용