개발자 99% 커뮤니티에서 수다 떨어요!
TIL (Today I Learned)
2022.02.20
오늘 읽은 범위
2장. 의미 있는 이름
책에서 기억하고 싶은 내용을 써보세요.
이름을 잘 짓는 규칙!
의도를 분명히 밝혀라
좋은 이름을 지으려면 시간이 걸리지만 좋은 이름으로 절약하는 시간이 훨씬 많다.
변수나 함수 그리고 클래스 이름은 다음과 같은 굵직한 질문에 모두 답해야한다. 변수의 존재 이유는? 수행 기능은? 사용 방법은? 따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다.
그릇된 정보를 피하라
컨테이너 유형을 이름에 넣지 않는편이 바람직하다. (이건 주석으로 달려있었던 말인데, 나중에 이것과 관련된 이야기가 있을 것 같다.)
서로 흡사한 이름을 사용하지 않도록 주의한다. 한 모듈에서 XYZControllerForEfficientHandlingOfString이라는 이름을 사용하고, 조금 떨어진 모듈에서 XYZControllerForEfficientStorageOfStrings라는 이름을 사용한다면? 차이를 알아챘는가? 두 단어는 겁나게 비슷하다.
의미 있게 구분하라
컴파일러를 통과할지라도 연속된 숫자를 덧붙이거나 불용어를 추가하는 방식은 적절하지 못하다.
Product라는 클래스가 있다고 가정하자. 다른 클래스를 ProductInfo, ProductData라 부른다면 개념을 구분하지 않은 채 이름만 달리한 경우다. Info나 Data는 a, an, the와 마찬가지로 의미가 불분명한 불용어다.
읽는 사람이 차이를 알도록 이름을 지어라.
발음하기 쉬운 이름을 사용하라
검색하기 쉬운 이름을 사용하라
인코딩을 피하라
헝가리식 표기법, 멤버 변수 접두어, 인터페이스 클래스와 구현 클래스의 인코딩
클래스 이름
클래스 이름과 객체 이름은 명사나 명사구가 적합하다. Manager, Processsor, Data, Info 등과 같은 단어는 피하고, 동사는 사용하지 않는다.
메서드 이름
메서드 이름은 동사나 동사구가 적합하다.
생성자를 중복정의할때는 정적 팩토리 메서드를 사용한다. 메서드는 인수를 설명하는 이름으로 작성한다.
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
변수, 함수, 클래서의 이름에 기능에 대한 의도가 들어있어야 한다. 내가 작업할 땐 보통 주석을 필요로 했었던 것 같은데 주석이 없이도 대상의 의미를 담을 수 있는 이름을 고민하면서 작성해야겠다는 생각이 들었다.
책의 내용이 쉽게 이해되지 않는 내용들도 있었지만, 이름을 짓는 규칙에 각각 안 좋은 코드의 예와 좋은 코드의 예가 함께 작성되어있어서 글만 읽는것보다 더 이해를 하기 좋았던 것 같다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
정적 팩토리 메서드
static 메서드로 인스턴스를 반환할 수 있는 기능을 하는 것으로, 생성자와 달리 메서드 이름을 가지므로 인자값에 대한 의미 및 반환될 객체의 특성을 표현할 수 있다.
불용어
문장을 분석하는데 큰 의미가 없는 문자열을 의미한다.