클린코드 2장 함수
1. SOLID 원칙
- 단일책임원칙 SRP
한 클래스는 하나의 책임만 가져아한다. 어떤 변화에 의해 클래스를 변경 해야하는 이유는 오직 한 가독성 향상과 유지보수가 용이 실전에서는 쉽지 않지만 상기!
- 개방 폐쇄 원칙 ocp
소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀있다. 변경에 의한 비용은 최소화하고 확정을 위한 비용은 가능한 극대화 객체지향의 *추상화와 *다형성을 활용
- 리스코프 치환 원칙
서브 타입은 언제나 기반 타입으로 교체 할 수 있어야한다. 상속을 이용해 확정성을 획득 다형성과 확장성을 극대화하기 위해서는 인터페이스를 사용하는 것이 더 효율적
- 인터페이스 분리원칙
자신이 사용하지 않는 인터페이스는 구현하지 말아야한다. 어떤 클래스를 이용하는 클라이언트가 여러개지만 특정부부만 사용한다면 여러 인터페이스로 분류하여 클라이언트가 필요한 기능만 전달한다.
- -의존성 역전원칙 (DIP)
상위모델은 하위 모델에 의존하면 안된다. 둘다 추상화에 의존 추상화는 세부사항에 의존해서는 안된다. 세부 사항은 추상화에 따라 달라진다.
2. 간결한 함수
- 함수내 추상화 수준을 맞춘다
- 두가지 기능이 보인다면.. 두가지 기능을 하나로 나눈다.
- 함수인수는 0~2개가 적당하다. 3개이상인 경우는 객체를 인자로 넘기기, 가변인자로 넘기기
3. 안전한 함수
- 부수 효과 없는 함수
값을 반환하는 함수가 상태를 변경하는 경우
- 함수 리팩터링
기능을 구현하는 서투른 함수를 작성(길고, 복잡하고, 중복이 존재) 테스트 코드를 작성한다. (분기와 경계값을 빠짐없이 테스트하는 코드를 작성) 리팩터링 한다. (코드를 다듬고, 함수를 쪼개고, 이름을 바꾸고 , 중복을 제거한다.)