2022.03.05
작게!
다. 둘째 규칙은 더 작게!
다.한 가지
가 무엇인지 알기 어렵울 경우 아래와 같은 방법을 사용할 수 있다.한 가지
작업만 하는 switch 문도 만들기 어렵다.public Momney calcuatePay(Employee e)throw InvalidEmployeeType {switch (e.type) {case COMMISSIONED:return calculateCommissionedPay(e);case HOURLY:return calculateCommissionedPay(e);case SALARIED:return calculateCommissionedPay(e);default:throw new InvalidEmployeeType(e.type);}}
위 함수에는 몇가지 문제가 있다.
한 가지
작업만 수행하지 않는다.switch문을 추상 팩토리 클래스에 숨기고, 다형성으로 나오는 파생 클래스들에게 각 함수 코드를 구현하게 할 수 있다.
boolean fileExisist("My File")
jInputStream fileOpen("My File")
Point p = new Point(0, 0)
write(name)
assertExpectedEqualsdActual(expected, actual)
한 가지
작업만 해야 한다. 오류를 처리하는 함수는 오류만 처리하는게 마땅하다.함수는 시스템에서 발생하는 모든 동작을 설명하는 계층이다.
우리가 작성하는 함수가 분명하고 정확한 언어로 깔끔하게 맞아떨어져야 시스템의 이야기를 풀어가기가 쉬워진다는 사실을 기억하자.
처음부터 좋은 함수를 작성하기는 쉽지 않은 일이니, 꾸준한 리팩터링과 테스트를 통해 좋은 함수를 만들 수 있도록 노력해야 한다.