본문 바로가기
ETC/개발 지식

[CleanCode] 3장 함수 - 2

by heekng 2022. 6. 26.
반응형

함수 - 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