1 minute read

Updated at 2021-12-30

Clean Code에 대하여

in Clean Code by Robert C. Martin

Ch2 의미있는 이름

  1. 의도를 분명하게 밝혀라
    좋은 이름을 지음으로써 절약되는 시간이
    좋은 이름을 지으려고 소비하는 시간보다 훨씬 많으므로,
    언제나 좋은 이름을 사용하려고 노력하라.
    코드 자체에 명시적으로 어떤 변수인지, 어떤 기능의 함수인지를 명확히 하라.

  2. 그릇된 정보를 피하라
    프로그래밍에 있어서 이미 널리 알려진 이름이나, 예약어, 널리 쓰여지는 자료구조 들의 이름이 포함된 이름은 좋지 않다.
    또한, 꽤나 다른 기능을하는 함수와 변수 간에 유사한 이름을 사용하지 않도록하라.

  3. 의미있게 구분하라
    다분히 의도적인 이름을 사용하라.
    쓸데없이 String, Object, Info와 같은 흔한 용어를 갖다 붙이지 말라. “읽는 사람이 차이를 알도록 이름을 지어라.”

  4. 발음하기 쉬운 이름을 사용하라.
    프로그래밍은 사회 활동이다. 발음하기 쉽고, 읽기 쉬워야한다.
    여러 사람이 모두 편하게 읽고 이해하고, 이를 통해 대화가 가능해야 한다.

  5. 검색하기 쉬운 이름을 사용하라.
    문자 하나를 사용하는 이름과 상수는 확인하기가 굉장히 어렵다. 매우 간단한 로컬 메소드에서만 로컬 변수를 한 문자롤 사용하는 것이 좋다. 이름 길이는 범위 크기에 비례해야 한다.
    이름을 의미있게 지으면 함수가 길어진다. 하지만 그 이름을 검색할 때의 편의성도 그만큼 커진다.

  6. 인코딩을 피하라.
    인코딩한 정보를 이름에 넣을 이유는 없다. 그런 이름은 발음하기 매우 어려우며 오타가 생기기도 쉽다.
    단, 아주 가끔은 필요할 수도 있다.

  7. 자신의 기억력을 자랑하지 마라.
    절대로 자신만 아는 내용을 이름으로 사용하지 마라. 명료함이 최고다

  8. 클래스 이름
    클래스 이름은 명사 혹은 명사구를 사용하라. 모호한 단어는 피하고, 동사는 사용하지 마라.

  9. 메소드 이름
    메소드 이름은 동사 혹은 동사구를 사용하라. 접근자, 변경자, 조건자는 각각 get, set, is 를 사용하라.(javabean 표준에 의거) 생성자를 중복 정의할 때에는 정적 팩토리 메소드를 사용하라. 이 메소드 이름은 인수를 설명하는 이름으로하라. 예를 들어,
    Complex fulcrumPoint = Complex.FromRealNumber(23.0);
    is better than
    Complex fulcrumPoint = new Complex(23.0);
    
  10. 기발한 이름을 피하라.
    이름은 명료해야 한다. 의도를 솔직하고 분명하게 표현하라.

  11. 한 개념에 한 단어를 사용하라.
    예를 들어, 같은 개념의 메소드를 클래스마다 fetch, get, retrieve 으로 제각각 부르면 혼란스럽다.
    일관성 있는 어휘를 사용하라.

  12. 말장난을 하지마라.
    11번의 이유 때문에 억지로 같은 어휘를 사용할 필요는 없다. 필요하면 분명히 맥락에 따라 다른이름을 사용하라.
    프로그래머는 코드를 최대한 이해하기 쉽게 짜야한다.
    대충 훑어봐도 알정도로.

  13. 해법 영역에서 가져온 이름을 사용하라.
    코드를 읽을 사람도 프로그래머 이므로, 웬만하면 프로그래머의 지식의 영역에서 이름을 고르라.

  14. 문제 영역에서 가져온 이름을 사용하라.
    만약 13이 어려운 경우, 문제 영역(고객의 영역)에서 이름을 가져와도 괜찮다. 만약 문제 영역과 관련이 깊다면 문제영역과 관련된 이름이 좋을 것이다.

  15. 의미있는 맥락을 추가하라.
    클래스, 함수, 이름 공간에 맥락을 부여하라.
    그렇지 못할 경우 최후의 수단으로 접두어를 붙인다.

  16. 불필요한 맥락을 없애라.
    불필요한 맥락을 이름에 부여하여 코드 재사용시의 불편함이 없도록 하라.