반응형

가독성 높이는 습관 - 이름짓기

 

 

클린 코드(Clean Code) - 이름짓기

  • 의도를 분명히 밝혀라
  • 그릇된 정보를 피하라
  • 의미있게 구분하라
  • 발음 / 검색하기 쉬운 이름을 사용하라
  • 자신의 기억력을 자랑하지 마라
  • 기발한 이름을 피하라
  • 한 개념에 한 단어를 사용하라
  • 말 장난을 하지마라
  • 해법 / 문제 영역에서 가져온 이름을 사용하라
  • 의미있는 맥락을 추가하라
  • 불필요한 맥락을 제거하라

 

 

이름을 지어야 하는 것들

  • 상수
  • 변수 (지역변수, 전역변수, 메서드 파라미터)
  • 메서드
  • 클래스
  • 모듈
  • 프로젝트

 

변수 / 상수 자체에 의미 담기

메서드와 기대하는 동작

 

 

의미 부여하기

  • 국내법상 성인 나이 : 만 19세
  • 결혼, 면허 취득, 국방의무, 납세의무 : 만 18세
User person = new User();

if (person.getAge() >= 19)
    System.out.println("성인 입니다.");
    
if (person.getAge() >= 18)
    System.out.println("결혼이 가능합니다.");
    
if (person.getAge() >= 19)
    System.out.println("면허취득이 가능합니다.");

▼ 아래와 같이 작성할 것

final static int ADULT_AGE = 19;
final static int MARRIAGEABLE_AGE = 18;
final static int DRIVER_LICENCE_AGE = 18;

if (user.getAge() >= ADULT_AGE)
    // ...doSomething
    
if (user.getAge() >= MARRIAGEABLE_AGE)
    // ...doSomething
    
if (user.getAge() >= DRIVER_LICENCE_AGE)
    // ...doSomething

 

 

기대하는 동작

/* 메서드명과 다른 동작하는 메서드 */
public void getProduct(long productId, Object productName) {
    Product product = productRepository.findOne(productId);
    product.setName(productName);
    productRepository.save(product);
}

/* 뭘 하는지 알수 없는 메서드 */
proudctSerivce.doWork(Product product, User user);
proudctSerivce.pre(Product product, User user);
proudctSerivce.post(Product product, User user);

 

 

일정한 규칙

  • prefix  vs.  postfix
  • response  vs.  result
  • DTO  vs.  Dto  vs.  VO
  • getXX  vs.  findXX  vs.  searchXX
  • deleteXX  vs.  removeXX
  • users  vs.  userList
  • params  vs.  parameter
  • optional  vs.  maybe

 

 

풀어서 쓰기

  • nm  →  name
  • cd  →  code
  • st  →  status
  • ord  →  order
  • mbr  →  member
  • grp  →  group

 

 

정리

  • 이름을 지을 때는 의미를 부여해야 한다.
  • 메서드의 이름은 기대하는 동작을 명확히 서술해야 한다.
  • 메서드는 이름과 다른 일을 하면 안된다.
  • 이름을 지을 때는 일정한 규칙을 가지고 일관성을 유지해야 한다.
  • 축약어보다는 풀어서 써야한다.

 

 


반응형

+ Recent posts