ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [CleanCode] 클린코드(2) - 의미 있는 이름
    programing/etc 2019. 10. 28. 22:14

    안녕하세요, Einere입니다.

    (ADblock을 꺼주시면 감사하겠습니다.)


    해당 포스트는 로버트 C 마틴의 클린코드를 읽고 내용을 간단히 정리한 글입니다.

     

     

    의도를 분명히 밝혀라

    각 변수가 무슨 의미를 지니는지 명확히 하자.

    (accountData와 account, customerInfo와 customer...

     

    의미없는 서수를 붙이지 말자.

    str1, st2, ...

    불용어(관사, 전치사, 대명사)를 최대한 추가하지 말자. 

    그러나 개인적으로 전치사는 추가하는게 좋은듯 합니다.

     

     

    그릇된 정보를 피하라

    부적절한 축약어, 겹치거나 유사한 이름을 자제하자.

     

    유사한 개념은 유사한 표기법을 사용하자. (일관성)

     

     

    발음하기 쉬운 이름을 사용하라

     

     

    검색하기 쉬운 이름을 사용하라

    매직 워드, 매직 넘버를 피하자.

    s 대신 sum, 5 대신 WORK_DAYS_PER_WEEK, ...

    (개발문화에 매직 워드라는게 실존하는지는 모르지만, s를 매직 넘버라고 하긴 그러니까요..)

     

     

    인코딩을 피하라

    헝가리안 표기법은 자제하자.

    강타입 언어라면, 타입을 컴파일러에서 체크하므로 자료형을 변수명에 넣지 맙시다.

    (js같은 경우는 표기하는게 좋은가..? )

     

    멤버 변수 접두어를 자제하자.

    클래스 내부에서만 사용될 변수는 딱히 'm_'을 붙여서 멤버 변수임을 나타낼 필요가 없습니다.

    사족이지만, js에서는 종종 private 변수임을 표현하기 위해 언더스코어(_)를 붙이는 경향이 있습니다.

     

    인터페이스 클래스와 구현 클래스

    abstract factory 패턴을 사용한다고 하면, 인터페이스 클래스와 구현 클래스가 나뉩니다. 이 때, 인터페이스 클래스를 강조하기 위해 'IFactory & Factory'라고 명명하기 보다는 구현 클래스를 강조하기위해 'Factor & FactoryImp'로 명명하는 것이 더 좋다고 합니다. (개인적으로도 해당 패턴을 사용한다면 인터페이스보단 구현 클래스를 더 자주 사용할 것이므로, 구현 클래스를 인코딩 하는 게 더 좋은 것 같습니다.)

     

     

    자신의 기억력을 자랑하지 마라

    코드는 자기만 보는것이 아니니까, 'r'이라는 변수가 뭘 의미하는지 안다고 해서 그대로 사용하는것은 금물입니다.

     

    클래스 이름

    명사나 명사구가 적절하다. 동사는 쓰지 맙시다.

     

    메소드 이름

    동사나 동사구가 적절합니다.

     

     

    기발한 이름은 피하라

    'deleteItem()' 대신에 'holyHandGrenate()'같은 이름을 쓰지 맙시다. (개인적으로 이런 사람은 못봤습니다.)

     

     

    한 개념엔 한 단어를 사용하라

    manager, controller, driver... 문맥에 맞게, 혼용하지 말고 일관성 있게 사용합시다.

    문맥이 다르다면 다른 단어를 사용하는 것이 좋습니다.

     

     

    영역을 고려하라

    적절한 프로그래밍 용어를 우선적으로 사용하되, 적절한 단어가 없다면 문제 영역에서 이름을 가져와 사용합시다.

     

     

    맥락을 고려하라

    만약 특정 메소드 알고리즘을 이해한 후에 해당 메소드 내부 변수의 의미를 이해할 수 있다면, 맥락을 추가해야 합니다.

    또한 불필요한 맥락이 있다면, 제거해야 합니다.

     

    댓글

Designed by black7375.