프로그램의 가장 기본단위인 함수를 잘 만드는 법을 소개 한다.

  1. 무조건 작게 만들어라

    한 함수는 20줄 이상 넘게하지 말아라. 20줄도 길다

    한 함수는 depth 2를 넘으면 안된다.

  2. 함수는 무조건 한가지 기능만 해야한다.

  3. 추상화 수준을 하나로 맞춰라

    여러 추상화 수준이 섞여있으면, 읽는 사람은 이것이 세부사항인지 중요한 부분인지 알 수 없다.

    메인 사항 + 세부사항 + 세부사항 … 이렇게 함수가 짜여있으면 읽는 사람은 세부사항의 중요도가 메인 사항과 같다고 착각 할 수 있다. 추가로 세부사항이 계속 추가 될 수 있다.

  4. switch문은 추상 팩토리로 숨기고 아무에게도 보여주지 않는다.

    switch문은 길고, 한가지 기능만 수행하지 않고 여러가지 문제점을 가지고있다. 하지만 사용하지 않을 수는 없기에, 추상 팩토리로 숨기고 보여주지 않는다.

  5. 서술적인 이름을 사용하라. 길어도 좋다.

    이름에 일관성이 있으면, 다른 클래스 이름을 쉽게 유추할 수 있다.

  6. 함수 인수는 없는게 가장 best다.

    함수인수 3개이상 쓰지마라. 없는게 가장 best이고 하나정도도 괜찮지만 2개 이상은 신경써야한다. (순서등)

    출력인수를 인수로 쓰지말아라. 사용자는 함수 자체가 입력인수를 넣어서 출력을 받는 구조라고 생각한다.

    boolean을 인수로 쓰지마라. 헷갈린다.

    인수와 잘 짝이 지어지는 동사이름을 지어라

  7. 부수효과를 일으키지 마라

    하나의 메서드는 하나의 일만 처리하도록하고 두개이상 수행한다면 함수명에서 숨기지마라.

    예를들면 password가 일치하는지 검사하는 함수에서 password가 일치하면 세션을 초기화하는 기능을 함께 넣지마라. 클라이언트는 메서드명만 보고 password를 validate해주는 것이라고 생각하지 세션을 초기화할 거라고 기대하지 않는다. 함수를 분리하거나, 함수명에 세션을 초기화 한다고 함께 적어라

  8. 명령이던지 조회던지 하나만 하는 함수로 만들어라

    ex) set함수가 값을 return하도록 만들지 말아라

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

    오류를 코드화하면 if/else 조건문 떡칠이 돼서 코드가 더러워진다. 또 오류코드를 enum값등으로 관리를 하면 enum 클래스에대한 의존성이 높아져서 좋지 않다. 예외처리를 사용하라

  10. 반복하지 마라

  11. 구조적 프로그래밍

    함수가 작다면 반복문에서 return이나 continue, break를 사용해도 좋지만, 그렇지 않다면 사용하지 마라