클린 코드 3장 - 함수

HanEol~·2025년 10월 13일

함수를 만드는 규칙

1. 작게 만들어라

1~4 줄이 좋다! 말이 쉽지 ..

2. 한 가지만 해라

함수는 한 가지만 해야하고 한 가지만 잘하고 한 가지만을 해야한다.

의미 있는 이름으로 함수를 작성할 수 있다면 그 함수는 여러 작업을 하는 함수이다.

함수를 한 가지 작업만 하기 위해 만들려면?
1. 함수당 추상화 수준은 하나로 한다.

3. if, case 문이 길어지는 경우에는 다형성을 사용해라.

fun calculatePay(e: Employee): Money {
    return when (e.type) {
        Type.COMMISSIONED -> calculateCommissionedPay(e)
        Type.HOURLY -> calculateHourlyPay(e)
        Type.SALARIED -> calculateSalariedPay(e)
        else -> throw InvalidEmployeeType(e.type)
    }
}

이 코드의 문제는 3가지가 있다.
1. 함수가 길다.
새 직원 유형을 추가하면 더 길어진다.
2. 한 가지 작업만 하지 않는다.
3. SRP 위반
코드를 변경할 이유가 여럿이기 때문에
4. OCP 위반

이 코드를 다형성을 사용해서 Employee를 추상 클래스로 하는 각 직원의 계산을 스스로 하게 만들게 추상화 한다.

4. 서술적인 이름 사용

5. 함수 인수는 적게 사용

플래그 인수는 추하다.. 함수가 벌써 부터 2가지 일을 한다는 것이다.

6. 부수 효과를 일으키지 마라

예시로는 유저 정보 확인하는 함수에 session을 초기화하는 동작을 추가하는 것이다.

문제가 발생 시 찾기가 힘들다..

7. 오류 코드보다 예외를 사용해라

if(delete1() == ok) {
	if(delete2() == ok) {
    	if(delete3() == ok) {
          ...

위와 같이 오류 코드를 사용하면 여러 겹으로 충접이 될 수 있다.

try{
	delete();
    delete1();
    delete2();
catch(Exception e){
	logger.log(e.message());

try-catch 블록은 추함으로 메소드로 분리한다.

try{
	delete123();
catch(Exception e){
	logError(e);

결론

프로그래머는 시스템을 (구현할) 프로그램이 아니라 (풀어갈) 이야기로 여긴다.

개발자의 마음가짐으로 좋은 문구인 것 같다.

함수는 동사이며, 클래스는 명사다.
이야기를 만드는 것 처럼 함수인 동사를 잘 만들어야 매끄럽게 이야기 할 수 있다.

profile
기록을 통해 앞으로 나아가자!

0개의 댓글