ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 의미 있는 이름
    개발 팁 2022. 1. 10. 22:54

    클린 코드의 첫 장은 의미 있는 이름을 짓는 것으로부터 시작한다.
    개발을 진행하며 발생한 수없는 버그와 어떻게 하면 좀 더 효율적인 알고리즘을 짤 수 있을까하는 고민으로
    고통받아왔던 사람이라면, 고작 이름을 잘 짓는 것이 무슨 대수냐고 반문할 지 모르겠다.
    하지만 내 경험에 의하면 의미없는 이름을 짓는 것이 개발을 진행하는데에 있어서 꽤 큰 장애물이 되는 것을 알기에
    한 번쯤 읽어본다면 도움이 될 것이라고 생각한다.
    그러나 책의 모든 내용을 옮기는 데에는 시간이 걸리기 때문에,
    내가 공감한 내용만 가볍게 추려보려고 한다.


    의도를 분명히 밝혀라
    -변수나 함수,클래스 이름을 지을 때에는 주석이 필요없을 정도로 의미를 명확하게 전달하는 이름이 좋다.
    -의도가 드러나는 이름을 사용하면 코드의 이해와 변경이 쉬워진다.

    그릇된 정보를 피하라
    -일반적으로 자주 사용되는 단어와 겹치는 이름을 짓지마라
    -읽는 사람으로 하여금 그릇된 해석을 하게 할 여지가 있다.

    의미 있게 구분하라
    -특정 단어만 추가한다고 하여 특정변수가 명확하게 구분되는 것은 아니다.
    -ex)productInfo,productData
    -의미를 명확하게 구분하는데 필요한 단어만 사용하라.
    ex)name과 nameString은 크게 다르지 않다.

    검색하기 쉬운 이름을 사용하라
    -WORK_DAYS_PER_WEEK는 검색하기 쉬우나,
    -days7은 7을 포함한 단어들도 함께 검색된다.

    클래스 이름

    • 클래스 이름 및 객체 이름은 명사 또는 명사구가 적합하다
    • 동사는 사용하지 않는다


    메서드 이름

    • 메서드 이름은 동사나 동사구가 적합하다
    • 접근자,변경자,조건자는 get,set,is를 붙인다.
    • 인수를 설명하는 이름을 사용한다.
    • ex)Complex()보다 Complex.FromRealNumber(23.0)이 좋다.
    • 생성자 사용을 제한하려면 해당 생성자를 private로 선언한다.


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

    • 같은 일을 수행하는 메서드를 클래스마다 다르게 지으면 혼란스럽다.
    • 동일한 코드 기반에 controller와 manager,driver를 섞어쓰면 혼란스럽다.
    • ex)동일한 기반의 코드를 가진 클래스가 각각 controller와 manager로 다르게 이름 지어진 경우,읽는 사람은 두 클래스가 완전히 다를 거라고 생각하게 될 여지가 있다.


    인코딩을 피하라

    • 컴파일러 또는 IDE가 변수 타입을 알려주므로 이름에 타입을 인코딩할 필요가 없다.
    • ex)phoneString

    말장난을 하지마라

    • 같은 단어를 두 가지 목적으로 사용하지 마라.
    • ex)값 두 개를 더하는 메서드와 집합에 요소를 추가하는 경우를 둘 다 add로 명명하는 경우.
    • 위의 경우는 insert 또는 append 등의 단어로 개념을 구분하는 게 맞다.


    해법 영역에서 가져온 이름을 사용하라

    • 알고리즘 이름,패턴 이름,수학 용어 등을 사용해도 프로그래머가 이해하기 쉽다.
    • visitor 패턴을 사용하는 경우 accountVisitor가 좋은 예.


    의미 있는 맥락을 추가하라

    • 클래스,함수,이름 공간 등을 넣어 맥락을 부여해라.
    • ex)state라는 변수가 주소의 일부라면, addrState가 더 나은 이름이다


    불필요한 맥락을 없애라

    • 애플리케이션 이름을 접두어로 붙이는 것은 현명하지 못하다
    • ex)GSTModifier는 검색 시 G로 시작하는 단어들을 함께 검색하므로,검색을 비효율적으로 만든다.
    • 긴 이름보다는 짧은 이름이 좋다.
    • ex)macAddress,cusomerAddress -> Address

     

Designed by Tistory.