IT/기타

[IT/책] Clean Code(클린 코드) - 변수와 함수

땅일단 2024. 7. 24. 22:08

신입 때 나름 빡세게(?) 교정받아서 코드 짤 때 스타일적으로는 좀 신경쓰는 편인데 평소에 미처 생각하지 못했던 부분만 정리합니다.

 

Clean Code (로버트 C.마틴 지음) 의 2, 3장 내용을 다루고 있습니다.

 

클린한 작명

- 검색하기 쉽도록 변수/함수명 짓기

좋은 예) WORK_DAYS_PER_WEEK 이라는 상수

 

- 타입은 바뀔 수 있으니 변수명에 타입을 적지 말기

나쁜 예) memberString 이라는 변수

 

- 인터페이스와 구현 클래스의 이름은?

ShapeFactory, ShapeFactoryImpl 이런 식이 좋다고 합니다... (근데 어떤 사람은 Impl 권장하지 않는다더군요)

 

 

클린한 함수

- 함수는 작게 만드는 게 대부분의 경우에서 좋다

- 함수는 한 가지 역할만 수행하도록 할 것

- if문에는 한 줄의 코드만 있는 게 좋다

- switch문은 abstract class의 구현체에만 있는 게 좋다 (아래 예시)

public abstract class Employee {
    public abstract boolean isPayday();
}

public interface EmployeeFactory {
    public Employee makeEmployee(EmployeeRecord r) throws InvalidEmployeeType;
}

public class EmployeeImpl implements EmployeeFactory {
    public Employee makeEmployee(EmployeeRecord r) throws InvalidEmployeeType {
    	switch (r.type) {
            case HOURLY:
            	return new HourlyEmployee(r);
            case YEARLY:
            	return new YearlyEmployee(r);
            default:
            	throw new InvalidEmployeeType(r.type);
     	}
    }
}

- 함수 파라미터의 개수는 적을수록 좋다 (없는 게 제일 좋다)

- 파라미터로 boolean 타입을 넘기는 건 매우 좋지 않다

- 오류 코드(오류가 될 수 있는 상황마다 if문 여러개 만드는 것) 대신 예외(try/catch와 Exception)를 사용한다

- try/catch는 지저분한 코드를 만들기 때문에, 해당 블록을 함수로 빼내는 게 좋다

- break, continue, goto 지양