Clean Code 읽기(2)

2장 의미 있는 이름

  • 들어가면서

    함수,변수,패키지,클래스 등 여러곳에 이름을 붙인다. 이름 붙이는 규칙을 소개

  • 의도를 분명히 밝혀라

    좋은 이름을 지으려면 시간이 걸린다 -> 하지만 그로인해 절약하는 시간이 더 많다.

    변수(함수,클래스 등)의 존재 이유는? 수행기능은? 사용방법은? 을 드러낼 필요가있다.

    예제 코드

  • 그릇된 정보를 피하라

    그릇된 단서를 남기지마라 - 쓸대없이 약어를 사용하여 혼란을 준다던가, 변수 타입이 아닌데 변수타입을 넣어 이름을 만들던가(List가 아닌데 numberList로 작성한다던지..), 유사한 이름을 만들어 혼란을 주지 않는다, 유사한 개념은 유사한 표기법을 사용, 헷갈리는 글씨(O, 0 / l 1 등..)

  • 의미 있게 구분하라

    product, productInfo, productData 뭐가 다름?, 읽는사람이 보고 구분이 갈 수 있도록 이름을 짓자.

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

    내 생각엔, 굳이 줄여쓰지말자는 얘기인거같다. 요즘은 자동완성도 잘 되어있으니, generationYearMonthoDayHourMinuteSecond라고 해도 될거같은데 너무 기니까 딱 generationTimestamp라고 쓴거같다.

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

    그냥 상수로 쓸수있는것을 검색할 수 있도록 변수로 지정해서 해주는것이 좋다.

    const int WORK_DAYS_PER_WEEK

  • 인코딩을 피하라

    유형이나 범위까지 인코딩에 넣지말아라

    무슨말인지 잘 모르겠..

    • 헝가리식 표기법

      헝가리식 표기법은 변수나 함수이름에 데이터타입을 명시하는 명명규칙이라고 생각하면된다. 근데 요즘은 컴파일러가 타입 오류를 감지 해주기때문에 굳이 변수명에 변수타입을 인코딩하여 넣을 필요가없다. bool bValue 이런거

    • 멤버 변수 접두어

      멤버변수에 흔히 private String m_name 이런식으로 클래스의 멤버변수라는 표기를 해주었는데 요즘은 멤버 변수를 다른 색상으로 표시하거나 눈에 띄게해주므로 굳이 붙일필요가없다.

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

      인터페이스의 경우는 접두어나 접미어가 필요할수있다. 내 KwInfoApi프로젝트의 Service 인터페이스와 ServiceImpl 구현 클래스같은 예시이다.

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

    for문이나 while문의 count용으로 i,j,k를 제외하고는 변수이름을 명료하게 지어라

  • 클래스 이름

    클래스, 객체이름은 명사나 명사구가 적합하다. 동사는 사용하지않는다. Manager, Processor, Data, Info등은 피한다

  • 메서드 이름

    메서드 이름은 동사나 동사구가 적합하다. postPayment, deletePage 등, Getter, Setter, ToString, 생성자 등을 사용하자.

  • 기발한 이름은 피하라

    재밌는 이름 X, 명료함 이름 O

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

    객체가 제공하는 메소드 목록에서 주석은 보여주지않으므로 함수이름과 매개변수 이름은 독자적이고 일관적이어야한다. Get을 사용했으면 get만쓰고 다른 ‘얻다’뜻을 가진 단어를 쓰지말자

  • 말장난을 하지마라

    add를 예시로, add가 두값을 더할수도있지만, 그냥 값을 컨테이너에 추가할수도있다. 이렇게 일관성을 핑계로 헷갈리게하지말고 insert나 append로 고치자

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

    알고리즘, 패턴이름 등의 용어를 사용해도 괜찮다. 해법영역에서 가져오라는뜻

  • 문제 영역에서 가져온 이름을 사용하라

    적절한 용어가없을경우는 문제영역에서 가져올 필요가있다.

    프로그래머라면 해법영역과 문제영역을 구분할 줄 알아야한다.

  • 의미 있는 맥락을 추가하라

    예시코드를 보니, 메소드명과 변수이름을 보고 맥락을 파악할 수 있었다. 그리고 새로운 메소드로 나누어 표현하니 가독성이 더 좋아졌다.

  • 불필요한 맥락을 없애라

    ‘Gas Station Deluxe’ 애플리케이션을 만든다고 가정하면, 모든 클래스 이름을 GSD로 시작하는것은 좋지않다. 이름에 불필요한 맥락을 추가하지 않도록 주의해야한다.

  • 마치면서

    좋은 이름을 선택하는것은 매우 중요하다.


2장을 보고, 사실 변수명이나 클래스 메소드명이 해당 기능을 명료하게 나타내야한다는것은 알고있었다. 근데 내 코드들을 떠올려보면 Data, Info같은 불용어들을 자주 붙였던거같다. 고쳐볼 수 있으면 고쳐보고 또 리뷰를 받자

댓글남기기