본문 바로가기
WEB/Clean Code

[Clean Code] 3장. 함수

by IT황구 2022. 1. 22.
728x90
반응형

Clean Code 3장 (함수)

작게 만들어라!

  • 함수를 만드는 규칙은 작게 만드는것이다.
  • 20줄도 길다. 이 책의 저자 켄트벡은 java swing의 함수들이 2~3줄 이었다고 한다. (이게 닌자코딩아닌가?)
  • if/else, while문에 들어가는 블록은 한 줄이어야 한다.

함수를 잘 만드는 원칙

  • 함수는 한가지를 해야한다. 그 한 가지를 잘 해야한다. 그 한가지만을 해야한다.
  • 워렌버핏의 주식 투자원칙이 생각나는 말인데, 결론은 제발 한가지만 하자 인것으로...

함수 당 추상화 수준은 하나로! (이해 좀 더 필요)

  • getHtml()은 추상화 수준이 높다.
  • String pagePathName = PathParser.render(pagepath); 는 추상화 수준이 중간이다.
  • .append('\n') 은 추상화 수준이 아주 낮다.
  • 한 함수에서 근본개념과 추상개념들을 막 뒤섞으면 안된다.

서술적인 이름을 사용하라 (일관적인 이름을 사용하자)

  • 모듈 내에서 같은 문구, 명사, 동사를 사용하는것이 좋다
    • includeSetupAndTeardownPages, includeSetupPages, includeSuiteSetup 규칙이 보인다.

부수효과를 일으키지 마라

  • 하나의 함수에서 한가지 일만 해라의 연장선이다
public boolean checkPassword(String userName, String password){
  if(user != User.NULL){
    //~~~중략
    if("Valid Password".equals(phrase))
    {
      Session.initialize();
      return true;
    }
  }
}
  • 위의 함수에서는 password를 검사하는것처럼 보이지만, session 초기화의 기능도 있다. 원래 명시된 기능 이외에 다른것들을 수정하면 안된다.

오류 코드보다 예외를 사용하라

  • if(deletePage(page) == E_OK) 보다 try/catch를 사용한 예외처리가 좀 더 낫다.
  • 모든 오류 처리를 위해 E_OK같은 error Enum을 만들면, 다른 클래스들에도 예외처리를 위해 import를 해야하고, error Enum이 변경시에 모두 수정해야하는 번거로움이 있다.
  • Try/Catch block은 뽑아내는것이 좋다 별도 함수로 뽑아내서 deletePage() 내부에서 try,catch를 수행하는것이 좋다.

우리팀이 가져가야할 점

  • 추상화 수준을 높게 하는게 좀 더 알아보기 쉽고, 단일 함수당 단일기능을 하자! (근데 너무 많은 함수가 있는건 좋게 )
  • Switch문을 혐오해서, 프로그램에서 한 번이상 사용하지 않고, 막 감춘다는데.. 여기는 너무 ..
728x90
반응형