Link
Today
Total
10-17 00:15
Archives
관리 메뉴

초보개발자 긍.응.성

(Clean Code) 2장 - 의미있는 이름 본문

책 정리/Clean Code

(Clean Code) 2장 - 의미있는 이름

긍.응.성 2021. 1. 16. 19:27
반응형

소프트웨어에서 이름은 어디나 쓰인다. 이름을 잘 짓는 것만으로도 코드의 가독성이 많이 향상될 수 있다.

의도를 분명히 밝혀라

  • 아무 의미 없는 이름은 짓지 말아야 한다
  • 자료구조에도 그 쓰임을 이해할 수 있도록 이름을 지어야 한다
  • 주석 없이 이해할 수 있는 이름을 지어라
int d; // 경과 시간(단위: 날짜)

int elapsedTimeInDays;
int daysSinceCreation;
int daysSinceModification;
int fileAgeInDays;

그릇된 정보를 피하라

  • 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용해선 안된다
  • 서로 흡사한 이름을 사용하지 않도록 주의한다
  • 유사한 개념은 유사한 표기법을 사용한다
  • 일관성이 떨어지는 표기법을 갖지 않도록 한다

의미 있게 구분하라

  • 불용어(noise word)를 추가하는 방식은 적절하지 못하다
    • name, nameString : name이 부동소수가 될 가능성은 없기에 nameString은 적절하지 못한 이름이다
    • 변수 이름에 variable
    • 클래스 이름에 Object : Customer 클래스와 CustomerObject 클래스의 차이를 이름으로 유추할 수 없다
    • getActiveAccount(), getActiveAccounts(), getAcctiveAccountInfo() 메서드의 차이를 이름으로 유추할 수 없다
  • 읽는 사람이 차이를 알도록 이름을 지어야 한다

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

  • 토론을 위해서라도 발음하기 쉬운 이름이 더 좋다
// '젠 와이 엠 디 에이치 엠 에스'
// '젠 야 무다 힘즈' (쓰인대로 발음 시)
private Date genymdhms;

// 올바른 영어 단어로 조합
private Date generationTimestamp;

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

  • 문자 하나를 사용하는 이름과 상수는 텍스트 코드에서 쉽게 눈에 띄지 않는다
  • final static 상수로 선언한다면 검색으로 찾아내기 쉽다
  • 이름 길이를 범위 크기에 비례하도록 지어야 한다
    • 여러 코드에서 사용한다면 더 검색하기 쉬운 이름을 지어야 한다

인코딩을 피하라

헝가리식 표기법

  • 헝가리식 표기법은 이름에 접두어를 붙여 타입을 지정하는 기법이다.
  • 자바는 변수 이름에 타입을 인코딩할 필요가 없기에 사용하지 말자

멤버 변수 접두어

  • 멤버 변수에 m_ 접두어를 붙이지 말자

인터페이스 클래스와 구현 클래스

  • AbstractFactory 구현에서 인터페이스와 구체 클래스의 명명에 접두어 I 를 붙이지 말자
  • 둘 중 하나를 인코딩 해야한다면 구현 클래스 이름을 인코딩 하며 접두어 C 또는 접미사 Imp 를 붙이자 (접미사 Imp를 더 많이 사용한다)

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

  • 독자가 코드를 읽으면서 변수 이름을 자신이 아는 이름으로 변환해야 한다면 그 변수 이름은 바람직하지 못하다
  • 명료함이 최고다

클래스 이름 & 메서드 이름

  • 클래스 이름과 객체 이름은 명사나 명사구가 적합하다
  • Manager, Processor, Data, Info 등과 같은 단어는 피하고, 동사는 사용하지 않는다
  • 메서드 이름은 동사나 동사구가 적합하다
  • javabean 표준에 따라 get, set, is를 붙이자
  • 생성자를 중복정의 해야한다면 정적 팩토리 메서드를 사용한다

기발한 이름은 피하라

  • 재미난 이름보다 명료한 이름을 선택하라

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

  • 추상적인 개념 하나에 단어 하나를 선택해 이를 고수한다
  • 일관성있는 언어 코드를 사용하라

말장난을 하지 마라

  • 한 단어를 두 가지 목적으로 사용하지 마라

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

  • 코드를 읽을 사람도 프로그래머이다
  • 전산 용어, 알고리즘 이름, 패턴 이름, 수학 용어를 사용해도 괜찮다

문제 영역에서 가져온 이름을 사용하라

  • '적절한 프로그래밍 용어가 없다'면 문제 영역에서 이름을 가져온다
  • 단, 문제 영역 개념과 관련이 깊은 코드라면 문제 영역에서 이름을 가져와야 한다

의미 있는 맥락을 추가하라

  • 단순 의미를 가진 이름 보다 맥락에 맞는 이름을 짓는것이 좋다

불필요한 맥락을 없애라

  • 애플리케이션 이름이 ABC라고 해서 모든 클래스 이름을 ABC로 시작하도록 하면 안된다
  • 이름에 불필요한 맥락을 추가하지 않도록 주의한다
반응형

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

(Clean Code) 6장 - 객체와 자료 구조  (0) 2021.01.28
(Clean Code) 5장 - 형식 맞추기  (0) 2021.01.19
(Clean Code) 4장 - 주석  (0) 2021.01.18
(Clean Code) 3장 - 함수  (0) 2021.01.17
Comments