본 글은 로버트 C. 마틴의 클린코드를 읽고 주관적인 생각을 적은 글입니다.
책을 읽어보니 코드를 작성할 때 의미 있는 이름이 얼마나 중요한지를 설명해주고 있었습니다.
해당 장을 읽고 중요하다고 생각되는 부분만 몇 가지 간추려봤습니다.
의도가 분명한 이름
나쁜 코드
public List<int[]> getThem() {
List<int[]> list1 = new ArrayList<int[]>();
for (int[] x : theList)
if (x[0] ==4)
list1.add(x);
return list1;
}
해당 코드에서는 의미가 분명하지 않아 소스 코드를 파악하기 어렵습니다.
theList 에는 무엇이 들어있는가?
theList 에서 0번째 값이 어째서 중요한가?
값 4는 무슨 의미인가?
함수는 반환하는 리스트 list1을 어떻게 사용하는가? 등 소스코드만 봐서는 해당 함수를 유추하기 어렵습니다.
좋은 코드
public List<Cell> getFlaggedCells() {
List<Cell> flaggedCells = new ArrayList<Cell>();
for (Cell cell : gameBoard)
if (cell.isFlagged())
flaggedCells.add(cell);
return flaggedCells;
}
단순히 이름만 고쳐도 해당 함수를 이해하기 쉬워집니다.
플래그가 지정된 셀들을 가져오는 함수구나, 셀에서 플래그가 지정된 셀들을 모아서 가져오는구나 와 같이 한 번에 코드가 잘 읽히게 됩니다.
발음하기 쉬운 이름
나쁜 코드
class DtaRcrd102 {
private Date genymdhms;
private Date modymhms;
private final String pszqint = "102";
/* ... */
}
genymdhms 변수는 "젠 와이 엠 디 에이취 엠 에스"로 발음하기 어렵고 만약 팀원과 해당 변수를 가지고 대화를 해야 한다면?
대화하기 힘듭니다.😅
좋은 코드
class Customer {
private Date generationTimestamp;
private Date modificationTimestamp;
private final String recordId = "102";
/* ... */
}
변경된 generationTimestamp 변수는 발음하기 쉬워졌습니다. 더불어 의미를 파악하기도 쉽습니다.
검색하기 쉬운 이름
나쁜 코드
for (int j = 0; j < 34; j++) {
s += (t[j] * 4) / 5;
}
4와 5는 의미도 파악하기 힘들고 소스 코드 내에서 검색 시 검색하기도 어렵습니다.
좋은 코드
int realDaysPerIdeaDay = 4;
const int WORK_DAYS_PER_WEEK = 5;
int sum = 0;
for (int j = 0; j < NUMBER_OF_TASKS; j++) {
int realTaskDays = taskEstimate[j] * realDaysPerIdealDay;
int realTaskWeeks = (realTaskDays / WORK_DAYS_PER_WEEK);
sum += realTaskWeeks;
}
4는 realDaysPerIdealDay로 5는 WORK_DAYS_PER_WEEK로 변경하여 어떤 변수인지도 의미도 파악하기 쉽고, 소스 코드 내에서 검색하기도 쉽습니다.
정리
클린 코드의미 있는 이름에 대해 몇 가지 예를 살펴봤는데요.
클린 코드 책에 대해서 부정적인 의견도 많지만 저는 그래도 일단은 한 번 읽어보는 게 좋다고 생각합니다.
읽고 실무에 적용하기 위해 노력을 해봐야 어떤 코드는 적용할만하고 어떤 코드는 뭔가 잘못되었는지 알 수 있는 것 같습니다.
워낙 주관적인 의견을 다루는 책이다 보니 모든 내용이 맞다고 볼 순 없는 것 같습니다. (저자도 주관적인 의견이니 의견은 언제나 환영한다고 되어있습니다.)😃
'클린코드와 리팩토링 > 클린코드' 카테고리의 다른 글
클린코드 - 객체와 자료구조 (0) | 2024.04.14 |
---|---|
클린코드 - 형식 맞추기 (3) | 2024.03.30 |
클린코드 - 주석 (0) | 2023.07.23 |
클린코드 - 함수 (0) | 2023.07.23 |