반응형
가독성 높이는 습관 - 이름짓기
클린 코드(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
정리
- 이름을 지을 때는 의미를 부여해야 한다.
- 메서드의 이름은 기대하는 동작을 명확히 서술해야 한다.
- 메서드는 이름과 다른 일을 하면 안된다.
- 이름을 지을 때는 일정한 규칙을 가지고 일관성을 유지해야 한다.
- 축약어보다는 풀어서 써야한다.
반응형
'cs > java-spring-boot' 카테고리의 다른 글
[Zero-base] 9-7. enum (0) | 2022.03.16 |
---|---|
[Zero-base] 9-6. 캡슐화 (0) | 2022.03.16 |
[Zero-base] 9-4. 왜 좋은 코드를 작성해야할까? (0) | 2022.03.16 |
[Zero-base] 9-3. 레거시 코드 (0) | 2022.03.16 |
[Zero-base] 9-2. 좋은 코드, 나쁜 코드, 이상한 코드 (0) | 2022.03.16 |