클린 코드 Assignment #03 [2장. 의미 있는 이름]

Ellie·2022년 4월 24일
0

클린코드

목록 보기
3/11

TIL (Today I Learned)

2022.04.25

오늘 읽은 범위

2장. 의미 있는 이름 (21p ~ 38p)

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

장 제목이 있는 페이지에 그림이 있다. 주위에 많은 아이들이 뛰어다니고 있으며, 소파에서 아이를 가진 엄마와 아빠가 이름을 고심하여 짓고 있는 듯하다. 개발자가 이름 짓는 것에 대한 비유가 매우 적절한 듯하여 재미있고 인상적이었다.😀

개발할 때 이름을 잘 지어야 한다는 것은 상식이다. 이 파트에서 이름을 잘 짓기 위한 여러 팁을 알려주고 있다.

  • 의도를 분명히 밝힐 것(최대한 명시적으로!).
  • 그릇된 정보를 피해라.
    • 이미 쓰이고 있는 약어를 다른 뜻으로 사용할 경우 다른 사람이 그릇된 정보로 오인할 수 있다. 이미 널리 쓰이는 약어나 용어는 사용하지 않는 게 좋다.
  • 의미 있게 구분하라.
    • 컴파일러만 통과시키자는 생각은 굉장히 위험하다. 또한 value1, value2 등등 숫자를 덧붙여 구분한 이름도 의도를 드러내지 못하며 좋지 못하다.
    • 다른 클래스인데도 ProductInfo 혹은 ProductData로 부른다면 개념을 잘 구분하지 않은 채 이름만 다르게 바꾼 것이다. Info나 Data는 의미가 불분명한 불용어다.
      • 여기서 굉장히 뜨끔했다... 코드에 Info를 종종 사용한 적이 있었는데, 사용하면서도 뭔가 의미가 불분명한 것 같아 찜찜했었다. 그런데 이렇게 명확하게 의미가 불명확하니 안좋은 이름이라고 글에 쓰여있다니...!
  • 발음하기 쉬운 이름을 사용하라.
    • 이 파트는 무슨 이야긴지 이해가 잘 가지 않았었는데, 함부로 많은 단어들을 조합해 한 단어로 만들지 말라는 소리였다. generate date, year, month, day, hour, minute, second를 genymdhms 이렇게 줄임말로 만드는 것보다 길더라도 generationTimestamp가 더 명확하다.
  • 검색하기 쉬운 이름을 사용하라.
    • 특히 변수나 상수를 코드 여러곳에서 사용한다면 검색하기 쉬운 이름이 바람직하다.
  • 인코딩을 피하라
    • 인터페이스 클래스 부분에서 인터페이스인것을 드러내고자 변수명에 I라는 접두어를 붙이는 것보다는 그냥 구현 클래스명처럼 작성하는 것이 낫다.
  • 자신의 기억력을 자랑하지 마라
    • 똑똑한 프로그래머와 전문가 프로그래머 사이에서 나타나는 차이점 하나만 들자면, 전문가 프로그래머는 명료함이 최고라는 사실을 이해한다. 전문가 프로그래머는 자신의 능력을 좋은 방향으로 사용해 남들이 이해하는 코드를 내놓는다.
  • 한 개념에 한 단어를 사용하라.
    • 예를 들어 데이터를 얻어오는 개념에 fetch, retrieve, get 등 다양한 용어를 쓰는 것은 좋지 않다.
  • 의미 있는 맥락을 추가하라
    • 어느 메서드에 state라는 변수 하나만 존재한다면 이 메서드가 무엇을 뜻하는 것인지 파악하기가 어렵다. 하지만 addr라는 접두어를 붙이고, addrFirstName, addrLastName등등 추가하면 맥락이 좀 더 분명해진다.

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

"해법 영역에서 가져온 이름을 사용하라""문제 영역에서 가져온 이름을 사용하라" 이 부분은 완벽하게 이해하진 못한 것 같다. 코드 마일리지를 더 쌓으면서 습득해야 하는 것 같다.

오늘 읽은 2장 "의미 있는 이름"은 이름을 지을 때마다 이 규칙들을 계속해서 되새겨보면서 좋은 이름이 맞는지 계속 고민해야 하는 듯하다. 좀 더 의미와 맥락이 분명한 이름을 지으려고 노력하자!

profile
정말로 아는 것인지 항상 의심하기

0개의 댓글