기존 함수에 새로운 기능을 추가할 일이 생겼다.
대략 아래처럼 쓰여진 함수였다.
if("A".equals(data.get("type"))){
...
}else if("C".equals(data.get("type"))){
...
}
A, C 란 과연 무엇을 뜻하는걸까?
저 A 와 C 는 정말 저 한 단어로도 유추가 되지 않았다. 진짜진짜로 이거 처음 만든 짠 사람만 안다. (어쩌면 그사람도 까먹었을지도)
나는 "A"와 "C"의 의미를 알기 위해 굳이 내가 고칠 부분이 아니지만 A와 C코드 안쪽을 다 읽어보고 분석했다. 그래도 확실하지 않아서 이 함수를 쓰는 모든 파일들을 검색해 의미를 알 수 있었다.
의미를 알아냈지만 왜 A와 C로 표현한건지 조차도 이해가 가지 않았다.
내가 익숙한 업무를 하다가, 익숙하지 않은 환경에 와보니 클린코드라는 것이 왜 필요한지에 대해 절실하게 느끼게 된다.
Enum을 써서 저 부분을 수정할 수도 있지만, 이 부분의 경우는 이 기능에 한정해서만 저 코드가 쓰일 것으로 보여서, 따로 Enum 을 만들기는 좀 그렇고, 이름있는 상수를 선언해서 저 부분을 조금 고쳐보았다.
private static final MSG_TO_PROFESSOR = "A";
private static final MSG_TO_STUDENT = "C";
...
if(MSG_TO_PROFESSOR.equals(data.get("type"))){
...
}else if(MSG_TO_STUDENT.equals(data.get("type"))){
...
}
위와 같이 소스를 고쳤다.
아직은 어떤 코드가 클린 코드인지는 잘은 모르겠지만, 그래도 이렇게 표현하면 이 부분 만큼은 처음 오는 사람도 이해할 수 있는 코드가 되지 않을까?
너무 제멋대로인 코드가 많다고 느꼈지만 아이러니하게도 이런 상황에 놓이니 더더욱 어떻게 짜는게 좋을지에 대한 진지한 고민을 더 많이 하게 되는 것 같다.
하루하루 더 좋은코드를 짜게 될 수 있는 환경이라고 생각해야지!
'공부 > CleanCode' 카테고리의 다른 글
2021.04.16 CleanCode 일지 #2. 조건문을 함수로 빼기 (0) | 2022.04.16 |
---|---|
2021.12.29 CleanCode 일지 #1. 단항함수 작성 (0) | 2021.12.30 |
서론. CleanCode 기록 시작 (0) | 2021.12.29 |
댓글