Community

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

← Go back
TIL 2장. 의미 있는 이름
#clean_code
2년 전
496
1


TIL (Today I Learned)

2022.02.20

오늘 읽은 범위

2장. 의미 있는 이름

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

  • 의도를 정확히 밝혀라 - 좋은 이름을 지으려면 시간이 걸리지만 좋은 이름으로 절약하는 시간이 훨씬 더 많다. 그러므로 이름을 주의 깊게 살펴 더 나은 이름이 떠오르면 개선하기 바란다.

  • 그릇된 정보를 피하라

  • 의미 있게 구분하라 - 컴파일러를 통과할지라도 연속된 숫자를 덧붙이거나 불용어noise word를 추가

    하는 방식은 적절하지 못하다. 이름이 달라야 한다면 의미도 달라져야 한다. 연속적인 숫자를 덧붙인 이름(a1, a2, ..., aN)은 의도적인 이름과 정반대다. 이런 이름은 그릇된 정보를 제공하는 이름도 아니며, 아무런 정보를 제공하지 못하는 이름일 뿐이다. 저자 의도가 전혀 드러나지 않는다.

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

  • 검색하기 쉬운 이름을 사용하라 - 이름 길이 는 범위 크기에 비례해야 한다.[N5] 변수나 상수를 코드 여러 곳에서 사용한다면 검색하기 쉬운 이름이 바람직하다.

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

    독자가 코드를 읽으면서 변수 이름을 자신이 아는 이름으로 변환해야 한다면 그 변수 이름은 바람직하지 못하다. 이는 일반적으로 문제 영역이나 해법 영역에서 사용하지 않는 이름을 선택했기 때문에 생기는 문제다.

    문자 하나만 사용하는 변수 이름은 문제가 있다.

  • 클래스 이름 -

    클래스 이름과 객체 이름은 명사나 명사구가 적합하다. Customer, WikiPage, Account, AddressParser 등이 좋은 예다. Manager, Processor, Data, Info 등과 같은 단어는 피하고, 동사는 사용하지 않는다.

  • 메서드 이름 -

    메서드 이름은 동사나 동사구가 적합하다. postPayment, deletePage, save 등이 좋은 예다. 접근자Accessor, 변경자Mutator, 조건자Predicate는 javabean 표준4에 따 라 값 앞에 get, set, is를 붙인다.

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

    추상적인 개념 하나에 단어 하나를 선택해 이를 고수한다. 예를 들어, 똑같은 메 서드를 클래스마다 fetch, retrieve, get으로 제각각 부르면 혼란스럽다.

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

    코드를 읽을 사람도 프로그래머라는 사실을 명심한다. 그러므로 전산 용어, 알 고리즘 이름, 패턴 이름, 수학 용어 등을 사용해도 괜찮다. 모든 이름을 문제 영 역domain에서 가져오는 정책은 현명하지 못하다. 같은 개념을 다른 이름으로 이 해하던 동료들이 매번 고객에게 의미를 물어야하기 때문이다.

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

어느정도는 이미 알고 있던 내용이었지만, 다시한번 되새김질 하는 과정에서 의미가 있었다. 프로그래머의 가장 큰 고민이 변수 이름 정하기라는 해외 밈이 있듯이, 변수나 메소드 등의 이름을 이해하기쉽게 정하는 것은 그 로직을 짜는 것 만큼이나 중요한 듯 싶다.

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

1 comment