신입 때 나름 빡세게(?) 교정받아서 코드 짤 때 스타일적으로는 좀 신경쓰는 편인데 평소에 미처 생각하지 못했던 부분만 정리합니다.
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 지양
'IT > 기타' 카테고리의 다른 글
[IT] 로그인 시 세션 관리 방법 (0) | 2024.08.04 |
---|---|
[IT/책] Clean Code(클린 코드) - 주석 (0) | 2024.07.25 |
[HTML] 시맨틱 태그(Semantic Tag) (0) | 2024.04.29 |
[IT] 프론트엔드 관련 개념 - 번들링 툴, WebAssembly, 자바스크립트 실수 오차에 대해 (코딩애플) (0) | 2024.04.16 |
[IT/일상] 스피커와 헤드폰을 빠르게 전환해보자 (0) | 2024.04.02 |