Protocol-Oriented-Programming

hoBahk·2021년 12월 31일
0

Protocol-Oriented-Programming에 대해 나름대로 정리한 것입니다.

  • 스위프트는 프로토콜 지향 프로그래밍언어
  • 프로토콜을 사용하면 수평구조이고 다중상속이 가능하기 때문에 객체지향에서 사용하는 상속보다 더 유연하게 코드를 작성할 수 있다.
  • 프로토콜에 익스텐션이 가능해짐에 따라 기본구현도 할 수있게 되었고 이를 통해 프로토콜 지향 프로그래밍이 한층 더 개선될 수 있다.

상속의 한계

  1. 클래스만 가능 (클래스로 하면 reference count 등 여러가지 신경쓸 것들이 많아진다, 비효율적일 수 있다.)
  2. 필요없는 것까지 상속하게 된다. (상속을 제한하는 방법을 하지만 리스코프 치환 원칙에도 위반되고 깔끔하지 않다.)
  3. 다중 상속 불가능

Protocol-Oriented-Programming 장점

  1. 오버라이드 가능(저장프로퍼티불가능, 저장프로퍼티 자체를 쓸 수 없음)
    • override 키워드 안쓰고 이름 같게 하면 재정의한 메서드가 우선순위가 더 높음
  2. 다중채택 가능
  3. 열거형, 구조체, 클래스 모두 가능 (값타입에 상속효과를 줄 수 있다.)
  4. 프로토콜간의 상속가능
  5. 수직구조 확장이 아닌 수평구조의 기능 확장
  6. 값타입을 사용할 수 있음에 따라 시스템 비용이 줄어든다.
  7. GUI 코드 없이도 수월한 테스트가 가능하다.
  8. 프로토콜과 익스텐션, 제네릭까지 사용하면 시너지 효과를 낼 수 있다.

Protocol-Oriented-Programming 한계

  1. 저장프로퍼티를 사용할 수 없다.
  2. 옵브젝트씨로 작성된 프로토콜에는 Extension을 사용하여 기본구현을 할 수 없다. (옵젝씨는 프로토콜 익스텐션이 없다.) (ex: Delegate, DataSorce)
  3. 기본구현으로 되어 있는 것을 사용하지 않는다고 따로 알려주지 않는다. 기본구현만 사용하는 프로토콜의 경우 나중에 사용하지 않더라도 채택하여 무엇을 사용하고 있는지 알기 쉽지 않다. (빼먹을 수 있다?)
profile
호박에 줄 그어서 수박 되는 성장 드라마

0개의 댓글