[Swift] 결합도와 응집도
·
Swift/개념 & 응용
서론 패턴과 설계를 공부하는 과정에서 "결합도"와 "응집도"라는 단어가 반복적으로 나오는 것을 발견했습니다. 좋은 설계란 "낮은 결합도"와 "높은 응집도"를 가지는 유지보수가 쉬운 설계를 말한다고 하는데요. 여기서 말하는 결합도와 응집도가 무엇인지 알아보겠습니다. 모듈 결합도와 응집도에 대해 알아보기 전, 모듈이 뭔지 알아야 합니다. 모듈은 개념의 범위가 넓기 때문에 명확하게 말하긴 어렵지만, 위키백과에서는 "기본적으로 본체에 대한 독립된 하위 단위" 라고 정의하고 있습니다. 프로그램이 본체라면, 이를 구성하는 클래스 등을 독립된 하위 단위로 말할 수 있습니다. 클린 코드, 클린 아키텍처의 저자인 로버트 마틴은 모든 모듈은 제대로 실행되어야 하고, 변경이 쉬워야 하고, 이해하기 쉬워야 한다고 말했습니다...
[Swift] Protocol 확장을 이용한 Singleton 개선
·
Swift/개념 & 응용
서론 싱글톤 패턴의 가장 큰 장점은 편리하다는 것입니다. 하지만 여러 부수적인 문제가 많고 특히, 사이드 이펙트가 크다는 점이 문제입니다. 프로젝트 전역에 두루두루 쓰이는 게 싱글톤 객체인데, 이말은 곧 싱글톤 객체에 문제가 생기면 프로젝트 전역에 문제가 생긴다는 뜻이기 때문입니다. 오늘은 Swift의 프로토콜 확장을 통해 이를 어느정도 해소할 수 있는 방법을 알아보겠습니다. 이것도 장단점이 있으니 프로젝트에 적절할 때 적용해보면 좋을듯 합니다. 프로토콜 확장(extension Protocol) 기본 원리는 프로토콜을 이용해 한 곳에서 싱글톤 호출을 담당하는 것입니다. 구조체나 클래스가 아니라, 프로토콜을 사용하는 이유는 싱글톤의 존재를 숨길 수 있기 때문입니다. 프로토콜을 정의하고, extension으..
[Swift] 공식 문서 - 프로토콜(Protocols) - 2
·
Swift/Swift 가이드
* Protocols 가이드 1편은 여기에서 볼 수 있습니다. 새로 배운 점 제네릭(generic) 타입은 프로토콜 이름 뒤에 where 절이 있을 때만 프로토콜의 요구사항을 만족합니다. Swift는 다음과 같은 커스텀 타입에 대해 Equatable 구현을 제공합니다. Equatable을 따르는 저장 프로퍼티만 가진 구조체 Equatable을 따르는 associated 타입만 가진 열거형 associated 타입이 없는 열거형 Swift는 다음과 같은 커스텀 타입에 대해 Hashable 프로토콜을 따르도록 할 수 있습니다. Hashable을 따르는 저장 프로퍼티만 가지고 있는 구조체 Hashable을 따르는 associated 타입만 가지고 있는 열거형 associated 타입이 없는 열거형 raw va..
[Swift] Swift 문법 - 프로토콜(Protocol)
·
Swift/개념 & 응용
안녕하세요. 오늘은 프로토콜(protocol)에 대해 알아보겠습니다. 프로토콜은 java의 interface와 동일한 개념입니다. Swift를 처음 공부하며 작성한 포스팅이기 때문에 부족한 내용이 있을 수 있습니다. 댓글로 알려주시면 공부해서 내용 추가하도록 하겠습니다. 미리 감사합니다! 그럼 바로 시작하겠습니다. 참고 자료 해당 포스팅은 Smile Han님의 유튜브 영상을 참고하며 작성하였습니다. https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA Protocol 프로토콜이란 특정 클래스와 관련 없는 property와 method 선언의 집합입니다. 포인트는 메서드 정의는 없고 선언만 있다는 것입니다. 클래스에서 프로토콜을 채택(adopt)해서 직접 구..
유정주
'Protocol' 태그의 글 목록