본문 바로가기
공부/CleanCode

2022.04.22 CleanCode 일지 #3. 조건문의 코드비교

by 미네밍 2022. 4. 22.

기존 함수에 새로운 기능을 추가할 일이 생겼다.

대략 아래처럼 쓰여진 함수였다.

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"))){
	...
}

위와 같이 소스를 고쳤다.

아직은 어떤 코드가 클린 코드인지는 잘은 모르겠지만, 그래도 이렇게 표현하면 이 부분 만큼은 처음 오는 사람도 이해할 수 있는 코드가 되지 않을까?

 

너무 제멋대로인 코드가 많다고 느꼈지만 아이러니하게도 이런 상황에 놓이니 더더욱 어떻게 짜는게 좋을지에 대한 진지한 고민을 더 많이 하게 되는 것 같다.

하루하루 더 좋은코드를 짜게 될 수 있는 환경이라고 생각해야지!

댓글