본문 바로가기
WEB/Clean Code

[Clean Code] 2장. (의미있는 이름, 요약 : 닌자코딩 금지)

by IT황구 2022. 1. 1.
728x90
반응형

의도를 분명히 밝혀라

  • 변수, 함수, 클래스명을 보고 주석이 필요 없는 이름이 중요하다 (진짜다)
  • int elapsedTimeInDays;
    int d; or int time;
  • elaspedTimeInDays가 훨씬 직관적이다.
  • x[0] == 1 대신 flag[SELECTED] == 1 이 좀 더 직관적이다. (매우 인정)
  • 의도를 함축하지마라 (닌자코딩 금지, 1장에서도 언급됨)
  • 결론 : 읽는 사람이 알도록 이름을 지어라.

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

  • 제니md흠스 변수좀 고쳐주세요!
  • private Date genymdhms; // 이게 사람이 할짓인가? 실화를 바탕으로 재구성(generate date, year, month, day, hour, min, sec)
    
    private Date generationTimeStamp; // 주석이 필요 없다.

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

  • int e로하면 검색하기가 굉장히 힘들다. 하지만 int WORK_DAYS_PER_WEEK은 검색이 훨씬 쉽다.
  • 검색의 관점에서 보면 긴 단어가 검색에 유리한건 맞다! But!! 아직 나에게는 그렇게 와닿지는 않는다.

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

  • 명료함이 최고다 string url; 대신에 string r; 로 해놓는 짓은 하지 말자. (협업을 해야하니까)

클래스이름, 메서드이름 명명규칙 (중요)

  • 클래스이름 : 명사 or 명사구 (ex : Customer, WikiPage, AddressParser) Manager, Data같은것들은 피하고 동사를 사용하지 않는다.
  • 메서드이름 : 동사 or 동사구 (javabean 표준에 따른다, 우리는 js, ts를 쓰지만 충분히 보기 좋아보인다.)
    • 접근자(Accessor) : 앞에 get을 붙인다. (ex : getId, getUserName)
    • 변경자(Mutator) : 앞에 set을 붙인다. (ex : setId, setUserName)
    • 조건자(Predicate) : 앞에 is를 붙인다. (ex : isValidUserName, isValidPassword)

한 개념에 한 단어를 사용하라 (와닿았음)

  • 값을 가져오는 메서드를 각 클래스마다 이름을 다르게 구현하는 경우가 있다. (ex : fetch, retrieve, get) 좋지 않은 습관이다.

의미 있는 맥락을 추가하라 ( 의도를 분명히 밝히는것과 연관 )

  • firstName, lastName, state 이것만 보고 이름과 주소를 합친건지, 주소인지 알 수 있는가?
  • 앞에 addr을 붙인다면, addrFirstName, addrLastName, addrState 주석이 필요없는 변수명 아름답다!

우리 팀이 가져가야할 결론

  • 의미있는 이름을 짓자. date? (ㄴㄴ), lectureStartDate (OK)
  • 혼자하는게 아닌 협업이다. 올바른 변수명으로 주석이 필요없는 변수명을 지향하는 습관을 들입시다!
728x90
반응형

'WEB > Clean Code' 카테고리의 다른 글

[Clean Code] 5장. 형식 맞추기  (0) 2022.02.20
[Clean Code] 4장. 주석  (0) 2022.01.23
[Clean Code] 3장. 함수  (0) 2022.01.22
[Clean Code] 3장. 함수  (0) 2022.01.22
[Clean Code] 1장. 깨끗한 코드  (0) 2021.12.26