대만에서의 기나긴 여정을 마치고, 한국에 입국과 동시에 새 회사에 들어가게되었다.
(사실 대만에서 화상으로 면접을 봤고, 운이 좋게 좋은 결과를 받았다.)
귀국하고나서 너무 정신 없이 지냈다.
그리고 드.디.어. 새로 입사한 이곳에서 간단한 기능을 추가 첫 배포후,
개발 팀원들과 간단한 “코드 리뷰”를 진행했다.
사실 코드 리뷰는 처음이라 어떻게 해야할지 잘 몰랐는데, 팀원분들이 잘 도와주셨고,
첫 코드 리뷰를 통해 얻었던 나의 코드에 관한 고찰을 남기려고한다.
(사실 코드 리뷰를 엄두해두지 않은 체로, 커밋관리를 엉망으로 한 상태여서 너무 창피했다😢.)
if(isLogin){
initStudentLogic();
}else{
initOtherLogic();
}
원래 코드를 그대로 가져오긴 좀 그래서, 예제 코드로 느낌만 살짝 빌려왔다.
isLogin
일경우, initStudentLogic
을 실행하고
아니면, initOtherLogic
을 실행하는 간단한 분기문이었다.
if(isLogin){
// 추가 분기 isTeacher
if(isTeacher){
initTeacherLogic();
return;
}
initStudentLogic();
}else{
initOtherLogic();
}
여기서 내가 추가한건 비교적 간단한 부분인,
isLogin
안쪽에서 한번 더 분기를 줘서 isTeacher
일 경우, initTeacherLogic
을 실행하고,
return
으로 함수를 종료해버려 뒤에 로직을 진행하지 않는 비교적 간단한 작업이었다.
그렇게 행복하게 살았습니다! 끗! .. 이면 좋겠지만! 😇
잠시 쉬어가는 타임으로..( 아니 뭘 했다고 쉬어가? )
내가 분기문을 마주했을때 리팩토링을 진행하는 과정을 단계별로 세분화 해서 정리해봤다.
String? awesomeMethod() {
if (isOK) {
// init OK Logic
// ..
// ..
return awesomeData;
} else {
// !isOK 일 경우
// logging 이나 간단한 작업
}
}
Bounce Pattern
: 유효하지 않은 경우를 먼저 처리하여 '핵심' 부분에 집중할 수 있게 해준다.String? awesomeMethod() {
if (!isOK) {
// !isOK 일 경우
// logging 이나 간단한 작업
} else {
// init OK Logic
// ..
// ..
return awesomeData;
}
}
else
문을 빼고 return
으로 함수를 종료시켜준다.Early Return Pattern
: 조건문이 만족할때 우선적으로 반환해 Depth 를 줄여 가독성을 높여준다.
String? awesomeMethod() {
if (!isOK) {
// !isOK 일 경우
return;
}
// init OK Logic
// ..
// ..
return awesomeData;
}
나 자신도 모르는 사이에 벌써 알지도 못하는 패턴을 2개나 사용하고 있었다.
아무튼간 위와 같은 규칙하에 리팩토링을 진행했던것 같다.
다시 돌아와서 위 작성된 코드를 봐보자.
if(isLogin){
// 추가 분기 isTeacher
if(isTeacher){
initTeacherLogic();
return;
}
initStudentLogic();
}else{
initOtherLogic();
}
내가 분기문을 마주했을때 진행한 패턴과 딱 맞아 떨어진다. 오로지 가독성만을 위한 로직.
하지만 전체 기획 관점에서 보면 학생과 선생은 동등한 계층이었다.
선생일때는 선생 로직, 학생일때는 학생 로직을 타는게 맞았다.
if(isLogin){
// 추가 분기 isTeacher
if(isTeacher){
initTeacherLogic();
}else{
initStudentLogic();
}
}else{
initOtherLogic();
}
결과적으로 보면 작동 결과는 같다고 별거 아닌거 가지고 유난 떤다고 생각 할 수도 있다.
하지만 기존에는 우선적 기능구현, 후 가독성 & 통일된 코드 스타일을 추구 하던 나에게는
이 기회를 통해 코드 한줄 한줄에 프로젝트의 방향성과 의도를 담을 수 있다는걸 배우게 되었다.
이러한 마인드셋을 가지고 있다면, 내가 지향하던 ‘근거있는 코드’ ( 의미를 가진 코드 ) 에
한발짝 더 가까워질 수 있지 않을까 하는 고민의 시간을 가지게 되었다.
개발자에게 있어서 코드 리뷰는 민감한 부분이며, 정말 필요한 과정인것같다.
내가 작성한 코드를 도마위에 올려놓고, 다같이 돌려보며 어떻다 저떻다 평가를 받으니..
민감할 수 밖에 없는것같다. 이 과정에서 자칫 잘못했다간 민감한 부분을 건드리고,
서로 감정이 상한 경우도 더러 있다고 들었다.
그에 비해 내 개발자 생에 첫 코드 리뷰는 너무 성공적이었고, 팀원들께 감사했다.
서로 배려하고 존중하며, ‘틀렸다’, ‘맞았다’ 를 판단하기보단,
내가 작성한 코드를 통해 서로의 의견을 ‘공유’하고 알아가는 시간이었고,
그를 통해 한 단계 성장 할 수 있었던 시간이었다.
각자의 바쁘신 와중에도 감사하게도 리뷰 시간을 내주신것에 감사하며,
이상 첫 코드 리뷰 후기 였습니다.