카테고리 없음

프로토콜 지향언어, Swift!

양시관 2024. 3. 14. 11:52

오늘은 swift 의 프로토콜 지향 프로그래밍의 장점과 클래스 기반 프로그래밍과 비교했을때 어떤 차이점이 있는지 알아볼것이고 프로토콜을 활용한 설계에서 주의해야 할 점과 프로토콜 확장을 사용하여 코드 재사용성을 높이는 방법은 무엇인지에 대해 답을 해보려고 한다.

 

Swift의 프로토콜 지향 프로그래밍의 장점
장점의 첫번째로는 재사용성과 유연성이 있습니다. 프로토콜은 특정 클래스, 구조체,열거형이 갖춰야할 메서드와 속성들을 정의를 합니다. 이러한 장점으로 다양한 타입에서 같은 프로토콜을 채택하여서 재사용을 높이고 유연한 설계가 가능하게 됩니다.두번째 장점으로는 무조건적인 상속을 제한해준다는 것입니다. 클래스 기반 프로그래밍에서는 상속을 통해서 코드를 재사용하는데 이러한 방식은 클래스 간의 결합이 강해져서 유연한 설계가 불가해지게 됩니다.근데 프로토콜을 사용하면 타입간의 관계가 느슨해지면서 유연한 코드를 설계하는데 장점이 부각되게 됩니다. 또한 다중 프로토콜채택이 가능해서 다중 상속의 이점을 활용하는 방식을 사용할 수 있습니다. 


클래스기반 프로그래밍과 프로토콜 기반의 차이점

이제는 차이점을 알아보려고 하는데 상속과 채택을 컨셉으로 생각한다면 클래스기반의 프로그래밍은 상속을 통해서 코드를 재사용하게 되지만 프로토콜을 지향한다면 채택 개념으로 구현되게 됩니다.

단일 상속과 다중 채택의 이슈에서는 클래스는 단일 상속만 가능하지만 프로토콜을 여러개를 동시에 채택할 수 있습니다.

 

프로토콜을 활용한 설계에서 주의해야 할 점

주의할점도 생각보다 많은것 같습니다.

너무 과도하게 사용하게 되면 뭐든 그렇겠지만 코드가 복잡해지고 관리하기가 어려워 집니다. 또한 명확한 목적을 가지며 코드의 의도를 쉽게 이해할 수가 있어야 으미가 생깁니다. 마지막으로 너무 구체적이거나 추상적이지 않도록 어느정도 균형을 맞춰놔야 프로토콜을 정의할 때 미래의 확장성을 고려하는 코딩이 될 수 있습니다.