책을 보고 정리하고 싶은 내용을 작성하는것이니
이해되지 않는 부분이 있을 수 있어요.
참고 부탁드립니다.
1. 캡슐화
- 접근 가능한 인터페이스를 제한하는 것
- 클래스가 제공하는 메서드를 통해서만 내부 정보나 데이터에 대한 외부 접근을 허가 하는 것을 의미한다.
- 과도한 유연성은 제어할 수 없음을 의미하고 속성이 여러 가지 이상한 방식으로 수정될 수 있으며 수정 논리가 코드의 모든 구석에 흩어져
코드의 가독성과 유지 관리 용이성에 영향을 줄 수 있다.
- 속성을 캡슐화하고 몇 가지 필요한 메서드만 노출하면 모든 비즈니스 세부 정보를 완벽하게 이해하지 않아도 잘못 사용할 가능성이
크게 줄어들 수 있다.
2. 추상화
- 메서드의 내부 구현을 숨기는 것
- 구현이 아닌 기능에만 초점을 맞춘 설계 사상인 추상화는 뇌가 불필요한 많은 정보를 걸러내는 데 도움이 된다.
- 메서드의 이름을 지을때는 보다 추상적인 이름을 사용하는 것이 좋다. getNaverCloudPictureUrl(X) / getPictureUrl(O)
3. 상속
- 상속의 가장 큰 역할은 코드의 재사용
- 과도하게 사용할 경우 즉, 상속 계층 구조가 너무 깊고 복잡하면 코드의 가독성과 유지 관리성이 떨어진다.
4. 다형성
- 다형성을 통해 서로 다른 클래스 또는 구조체가 동일한 인터페이스를 공유할 수 있으며, 이를 통해 유연하고 재사용 가능한 코드를
작성할 수 있다. (Swift에서 다형성은 주로 프로토콜과 상속을 통해 구현)