클린코드 4일차 - 의미 있는 이름 짓는 시간은 유의미하다.
클린코드 4일차 (p. 24~34(2장) )
2 의미 있는 이름
1. 그릇된 정보를 피하라
- 여러 계정을 그룹으로 묶을 때, 실제 List가 아니라면 명명에 조심해야한다. (accountList → accountGroup/Accounts)
- 프로그래머에게 List는 특수한 의미.
- 유사한 개념은 유사한 표기법 사용
- 일관성이 떨어지는 표기법은 그릇된 정보
2. 의미 있게 구분하라
- 연속적인 숫자를 덧붙은 이름 X
// 연속적으로 덧붙인 이름은 그릇된 정보를 제공하는 이름도 아니고, 아무런 정보를 제공하지 않음!!
public static void copyChar(char a1[], char a2[]){
for (int i = 0; i < a1.length; i++){
a2[i] = a1[i];
}
}
// 함수 인수 이름으로 source와 destination으로 바꾸니 한 눈에 보인다...!
public static void copyChar(char source[], char destination[]){
for (int i = 0; i < source.length; i++){
destination[i] = source[i];
}
}
- 불용어를 추가한 이름 X
- Product 클래스 / ProductInfo 클래스 / ProductData 클래스 → 차이를 구분할 수 있는가 ?
- Info나 Data는 a, an, the와 마찬가지로 의미가 불분명한 불용어
- 변수 이름에 variable 단어도 단연코 금물.
3. 발음하기 쉬운 이름을 사용하라
- genymdhms(generate date, year, month, day, hour, minute, second) = "젠 야 무다 힘즈"로 탄생 ..
- generationTimestamp
4. 검색하기 쉬운 이름을 사용하라
- 검색하기 어려운 이름(ex: 한 글자짜리 이름) 한 문자 이름은 간단한 메서드에서 로컬 변수일 때만.
- 변수나 상수를 코드 여러 곳에서 사용한다면 검색하기 쉬운 이름이 바람직
5. 인코딩을 피하라
6. 자신의 기억력을 자랑하지 마라
7. 클래스 이름
- 클래스 이름과 객체 이름은 명사, 명사구 적합
- Customer, WikiPage, Account (Good !!)
- Manager, Processor, Data, Info (Bad !!) + 동사 (Bad !!)
8. 메서드 이름
- 메서드 이름과 동사, 동사구 적합
- postPayment, deletePage, save (Good !!)
- 접근자, 변경자, 조건자는 javabean 표준에 따라 값 앞에 get, set, is를 붙임.
10. 기발한 이름은 피하라
11. 한 개념에 한 단어를 사용하라
12. 말장난을 하지마라
13. 해법 영역에서 가져온 이름을 사용하라
- 기술 개념에는 기술 이름이 가장 적합한 선택
14. 문제 영역에서 가져온 이름을 사용하라
- 적절한 '프로그래머 용어'가 없다면 문제 영역에서 이름을 가져옴.
- 코드를 보수하는 프로그래머가 분야 전문가에게 의미를 물어 파악 가능
- 즉, 문제 영역 개념과 관련이 깊은 코드라면 문제 영역에서 이름을 가져와야 한다.
- 관련 사례로 변수명을 '한글'을 이용해 코딩하는 경우를 보았다. (* 토스의 세종대왕 프로젝트)
https://tosspayments-dev.oopy.io/chapters/frontend/posts/hangul-coding-convention
추가적으로 기록할 개발팁
(*토스페이먼츠에서 공유한 "delete"와 "remove"의 차이)
- delete: 영구적으로 삭제. 더 이상 존재하지 않음.
- remove: 존재는 하지만, 내 눈에서 치움.
삭제를 한다는 개념에서 delete와 remove를 구분할 수 있다는 점에서 영어 공부를 다시 해야하나 싶기도 하고 ..
시스템 상 '삭제되었습니다.'로 유저에게 보여줘도 DB에서 완전 삭제가 아닌 state로 구분해놓으면 그건 또 "delete"는 아니고 ..
이 경우는 영구적으로 삭제/normal 삭제 에 대한 구분을 명확히 표현할 때 유용하게 사용할 수 있을 것 같다.
또한 위 내용을 언급해보자면 delete와 remove는 동사이기에 메서드의 이름을 명명할 때 사용한다고 볼 수 있다.
느낀점
- 해당 클래스에 관련된 정보를 저장한다는 의미로 예를 들어 CompanyInfo로 작명하곤 했었는데 불용어를 지양해야겠다.
- delete와 remove의 차이. 영어 공부를 하자.
'알아두면쓸데있는신기한잡학사전 > 독서일지' 카테고리의 다른 글
[클린코드] 7일차 - 오류 보단 예외처리, 그리고 클린코드로 인한 중복 알레르기 (1) | 2023.10.31 |
---|---|
[클린코드] 6일차 - 좋은 함수를 위한 n가지 주의사항 (1) | 2023.10.30 |
[클린코드] 5일차 - 분명한 이름을 위한 의미있는 맥락(Context) 부여, 함수는 한 가지 일만. (1) | 2023.10.29 |
[클린코드] 3일차 - 의미 있는 이름은 어떻게 지을까? (2) | 2023.10.25 |
[클린코드] 2일차 - 장인정신 길들이기 및 클린코드 고생길 시작 (3) | 2023.10.25 |