티스토리 뷰

원문 : https://medium.com/@jpetrichsr/three-swift-anti-patterns-6c96cf99ea9





[시작]


- Swift는 옵셔널, 일급 객체로서의 함수, 고차 함수, 익스텐션과 두 개 이상의 반환값 등 강력한 기능을 제공하지만, 이것이 당신에게 잘못된 습관을 심어줄 수 있다.




[강제 옵서녈 래핑 Force Unwrapping Optionals]


- 프로토콜을 구현할 때 강제 옵셔널 래핑을 사용하여 구현하는 것은 그 부분에 fatalError() 코드를 작성하는 것과 같다고 할 수 있다.

- 프로토콜을 준수함으로서 구현해야 하는 함수가 옵셔널로 되어 있는 인자를 가지고 있다면, 적절한 방법(if let, guard 등)을 사용하여 이 경우를 해결해야 한다.

- 안전한 구현에는 더 많은 코드가 필요한 것도 아니고, nil일 경우를 우아하게 해결해준다.



[필수적인 것을 뷰컨트롤러의 프로퍼티로 선언 Declaring View Controller Properties As Required]


- 뷰컨트롤러의 프로퍼티에 이전 뷰컨트롤러에서 넘어올 것이라고 예상되는 값(!)을 선언해 두었다.

- 하지만 이전 뷰컨트롤러에서 그 프로퍼티를 초기화할 것이라고 강제하는 수단이 없으므로, 초기화하지 않았다면 해당 프로퍼티에 접근하는 것으로 런타임 에러를 발생시킬 수 있다.

- 프로퍼티에 기본값을 할당해 주거나, 옵서녈(?)로 선언함으로써 해결할 수 있다.



[프로토콜에 관계 없는 메소드를 추가 Adding Unrelated Methods To Protocols]


- 새로운 프로토콜을 만들고 구현하는 오버헤드(사실은 그렇게 크지도 않은)를 피하기 위해 이미 구현하고 있는 프로토콜에 메소드를 추가하려는 유혹을 받는다.

- 유지보수 측면에서 좋지 않고, 테스트 하기에도 좋지 않다.

'Swift' 카테고리의 다른 글

Bool 변수 이름 짓기  (0) 2018.08.01
forEach 메소드와 for-in 루프의 차이점  (0) 2018.07.31
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
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
글 보관함