Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
[TIL] Assignment 3. 의미 있는 이름
#clean_code
2년 전
547


TIL (Today I Learned)

2022.02.20

오늘 읽은 범위

2장. 의미 있는 이름

책에서 기억하고 싶은 내용을 써보세요.

이름을 잘 짓는 규칙!

  • 의도를 분명히 밝혀라

    • 좋은 이름을 지으려면 시간이 걸리지만 좋은 이름으로 절약하는 시간이 훨씬 많다.

    • 변수나 함수 그리고 클래스 이름은 다음과 같은 굵직한 질문에 모두 답해야한다. 변수의 존재 이유는? 수행 기능은? 사용 방법은? 따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다.

  • 그릇된 정보를 피하라

    • 컨테이너 유형을 이름에 넣지 않는편이 바람직하다. (이건 주석으로 달려있었던 말인데, 나중에 이것과 관련된 이야기가 있을 것 같다.)

    • 서로 흡사한 이름을 사용하지 않도록 주의한다. 한 모듈에서 XYZControllerForEfficientHandlingOfString이라는 이름을 사용하고, 조금 떨어진 모듈에서 XYZControllerForEfficientStorageOfStrings라는 이름을 사용한다면? 차이를 알아챘는가? 두 단어는 겁나게 비슷하다.

  • 의미 있게 구분하라

    • 컴파일러를 통과할지라도 연속된 숫자를 덧붙이거나 불용어를 추가하는 방식은 적절하지 못하다.

    • Product라는 클래스가 있다고 가정하자. 다른 클래스를 ProductInfo, ProductData라 부른다면 개념을 구분하지 않은 채 이름만 달리한 경우다. Info나 Data는 a, an, the와 마찬가지로 의미가 불분명한 불용어다.

    • 읽는 사람이 차이를 알도록 이름을 지어라.

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

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

  • 인코딩을 피하라

    • 헝가리식 표기법, 멤버 변수 접두어, 인터페이스 클래스와 구현 클래스의 인코딩

  • 클래스 이름

    • 클래스 이름과 객체 이름은 명사나 명사구가 적합하다. Manager, Processsor, Data, Info 등과 같은 단어는 피하고, 동사는 사용하지 않는다.

  • 메서드 이름

    • 메서드 이름은 동사나 동사구가 적합하다.

    • 생성자를 중복정의할때는 정적 팩토리 메서드를 사용한다. 메서드는 인수를 설명하는 이름으로 작성한다.

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

변수, 함수, 클래서의 이름에 기능에 대한 의도가 들어있어야 한다. 내가 작업할 땐 보통 주석을 필요로 했었던 것 같은데 주석이 없이도 대상의 의미를 담을 수 있는 이름을 고민하면서 작성해야겠다는 생각이 들었다.

책의 내용이 쉽게 이해되지 않는 내용들도 있었지만, 이름을 짓는 규칙에 각각 안 좋은 코드의 예와 좋은 코드의 예가 함께 작성되어있어서 글만 읽는것보다 더 이해를 하기 좋았던 것 같다.

궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

정적 팩토리 메서드

static 메서드로 인스턴스를 반환할 수 있는 기능을 하는 것으로, 생성자와 달리 메서드 이름을 가지므로 인자값에 대한 의미 및 반환될 객체의 특성을 표현할 수 있다.

불용어

문장을 분석하는데 큰 의미가 없는 문자열을 의미한다.