반응형
함수 - 2
부수효과를 일으키지 마라
- 함수에서 한 가지를 하겠다고 약속하고선 남몰래 다른 것도 하면 안된다.
- 예상치 못하게 클래스 변수를 수정하고나, 함수로 넘어온 인수나 시스ㅔㅁ 전역 변수를 수정하면 안된다.
출력 인수
// 나쁜 예
appendFooter(stringBuffer);
// 좋은 예
report.appendFooter()
- 일반적으로 우리는 인수를 함수 입력으로 해석한다.
- 출력 인수는 피해야 한다. 함수에서 상태를 변경해야 한다면 함수가 속한 객체 상태를 변경하는 방식을 택한다.
명령과 조회를 분리하라
- 함수는 뭔가 수행하거나 뭔가에 답하거나 둘 중 하나만 해야 한다.
- 객체 상태를 변경하거나 객체 정보를 반환하거나 둘 중 하나다.
오류코드보다 예외를 사용하라
- 명령 함수에서 오류 코드를 반환하는 방식은 명령/조회 분리 규칙을 미묘하게 위반한다.
- 오류 코드 대신 예외를 사용하면 오류 처리 코드가 원래 코드에서 분리되므로 코드가 깔끔해진다.
Try/Catch 블록 뽑아내기
- try/catch 블록은 코드 구조에 혼란을 일으키며, 정상 동작과 오류 처리 동작을 뒤섞는다.
- try/catch 블록은 별도 함수로 뽑아내는 편이 좋다.
오류 처리도 한 가지 작업이다.
- 함수는 한 가지 작업만 해야 한다. 또한 오류 처리도 한 가지 작업에 속한다.
- 함수에 try가 있다면 함수는 catch/finally 문으로 끝나야 한다.
Error.java 의존성 자석
- 오류 코드를 반환한다는 이야기는, 클래스든 열거형 변수든, 어디선가 오류 코드를 정의한다는 뜻이다.
- 오류 코드 대신 예외를 사용하면 새 예외는 Exception 클래스에서 파생된다. 따라서 재컴파일/재배치 없이도 새 예외 클래스를 추가할 수 있다.
반복하지 마라
- 중복된 코드는 코드 길이가 늘어날 뿐 아니라 알고리즘이 변하면 중복된 개수만큼 수정해야 한다.
- 객체 지향 프로그래밍은 코드를 부모 클래스로 ㅁ로아 중복을 없앤다.
- 구조적 프로그래밍, AOP, COP 모두 어떤 면에서 중복 제거 전략이다.
구조적 프로그래밍
- 함수는 return문이 하나여야 한다.
- 루프 안에서 break나 continue를 사용해선 안되면 goto는
절대로
안된다. 이것은 함수가 클 때에만 의미가 있다.
반응형
'ETC > 개발 지식' 카테고리의 다른 글
[CleanCode] 6장 객체와 자료구조 (0) | 2022.07.02 |
---|---|
[CleanCode] 5장 형식 맞추기 (0) | 2022.06.30 |
[CleanCode] 4장 주석 (0) | 2022.06.28 |
[CleanCode] 3장 함수 - 1 (0) | 2022.06.26 |
[CleanCode] 2장 의미있는 이름 (0) | 2022.06.25 |
Cron 표현식 (0) | 2022.06.24 |