[Clean Code] 클린 코드 #Day 2 / 의미 있는 이름

ChilihC·2022년 2월 20일
0

Clean Code

목록 보기
3/13
post-thumbnail

TIL(Today I Learned) 🧑🏻‍💻


2. 의미 있는 이름


내용 정리 & 기억하고 싶은 내용

  • 변수나 함수 그리고 클래스 이름은 다음과 같은 굵직한 질문에 모두 답해야 한다. ( 의도를 분명히 하라. ) <p.22>

    • 변수(혹은 함수나 클래스)의 존재 이유는?

    • 변수(혹은 함수나 클래스)의 수행 기능은?

    • 변수(혹은 함수나 클래스)의 사용 방법은?

  • 프로그래머는 코드에 그릇된 단서를 남겨서는 안 된다. ( 그릇된 정보를 피하라. ) <p.24>

    • 나름대로 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용해도 안 된다.

    • 서로 흡사한 이름을 사용하지 않도록 주의한다.

    • 유사한 개념은 유사한 표기법을 사용한다. 이것도 정보다. 일관성이 떨어지는 표기법은 그릇된 정보다.

  • 컴파일러를 통과할지라도 연속된 숫자를 덧붙이거나 불용어(noise word)를 추가하는 방식은 적절하지 못하다. 이름이 달라야 한다면 의미도 달라져야 한다. ( 의미있게 구분하라. ) <p.26>

    • 고객 급여 이력을 찾으려면 어느 클래스를 사용해야할까?

      • getActiveAccount();
      • getActiveAccounts();
      • getActiveAccountInfo();
    • moneyAmount와 money는 구분이 안된다. 읽는 사람이 차이를 알도록 이름을 지어라.

  • 말을 처리하려고 발달한 두뇌를 활용하지 않는다면 안타까운 손해다. 그러므로 발음하기 쉬운 이름을 선택한다. ( 발음하기 쉬운 이름을 사용하라. ) <p.27>

  • 문자 하나를 사용하는 이름과 상수는 텍스트 코드에서 쉽게 눈에 띄지 않는다는 문제점이 있다. ( 검색하기 쉬운 이름을 사용하라. ) <p.28>

    • 검색이 어려운 짧은 단어들이라는 관점에서 긴 이름이 짧은 이름보다 좋다. 검색하기 쉬운 이름이 상수보다 좋다.

    • 이름 길이는 범위 크기에 비례해야 한다.

  • 굳이 부담을 더하지 않아도 이름에 인코딩할 정보는 아주 많다. ( 인코딩을 피하라. ) <p.29>

  • 똑똑한 프로그래머와 전문가 프로그래머 사이에서 나타나는 차이점 하나만 들자면, 전문가 프로그래머는 명료함이 최고라는 사실을 이해한다. ( 자신의 기억력을 자랑하지 마라. ) <p.31>

    • 클래스 이름과 객체 이름은 명사나 명사구가 적합하다.

      • Customer, WikiPage, Account, AddressParser (O)

      • Manager, Processer, Data, Info (X)

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

      • PostPayment, deletePage, save (O)

      • Accessor, Mutator, Predicate는 javabean표준에 따라 값 앞에 get, set, is를 붙인다. (getName, setName)

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

  • 기발한 이름은 피하고 명료한 이름을 선택하라. <p.32>

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

  • 한 단어를 두 가지 목적으로 사용하지 마라. 다른 개념에 같은 단어를 사용한다면 그것은 말장난에 불과하다. ( 말장난을 하지 마라. )

  • 모든 이름을 문제 영역에서 가져오는 정책은 현명하지 못하다. 같은 개념을 다른 이름으로 이해하던 동료들이 매번 고객에게 의미를 물어야하기 때문이다. ( 해법 영역에서 가져온 이름을 사용하라. ) <p.34>

  • 적절한 '프로그래머 용어'가 없다면 문제 영역에서 이름을 가져온다. ( 문제 영역에서 가져온 이름을 사용하라. ) <p.34>

  • 함수 이름은 맥락 일부만 제공하며, 알고리즘이 나머지 맥락을 제공한다. ( 의미 있는 맥락을 추가하라. ) <p.35>

  • 일반적으로 짧은 이름이 긴 이름보다 좋다. 단, 의미가 분명한 경우에 한해서다, 이름에 불필요한 맥락을 추가하지 않도록 주의한다. ( 불필요한 맥락을 없애라. ) <p.37>

암기는 요즘 나오는 도구에게 맡기고, 우리는 문장이나 문단처럼 읽히는 코드 아니면 적어도 표나 자료 구조처럼 읽히는 코드를 짜는 데만 집중해야 마땅하다. <p.38>


생각 & 느낀점 📝

  • 변수 이름을 생각하는 것은 게임 속 캐릭터 이름을 짓는 것 이상으로 힘들다. 게임 속 캐릭터는 단 하나만 지으면 되는 반면에 변수는 수십개 많개는 수백개에 이르기 때문이다.

  • 올바른 변수 이름은 무엇인가? 클린 코드에 다가가기 위한 첫 걸음은 적합한 변수 이름 설정이라는 것을 알았다.

  • 적절한 예제와 원칙들은 나에게 변수 이름 설정의 중요함과 효용성을 알려주었다.

  • 변수 이름 설정의 원칙과 원리를 이해하고 있는다고 알맞은 변수 이름을 설정해낼 수 있는 것은 아니다. 결론은 실전 연습이다. 계속해서 수많은 변수들을 만들게 될 것이고 그 떄마다 이 원칙들을 복기할 것이다.

  • 적절한 변수 이름은 클린 코드에 귀결된다.


새로 용어 정리


참고 문헌


profile
developer junior

0개의 댓글

관련 채용 정보