두 버전을 비교하는 코드를 작성했다.
예를 들어 시스템에서 요구하는 최소 버전이 있는데, 사용자의 버전이 시스템의 최소 요구 버전을 만족하는지 확인하는 함수
function checkValidVersion(systemVersion, userVersion) {
let sepSystemVersion = systemVersion.split('.');
let sepUserVersion = systemVersion.split('.');
if(sepSystemVersion[0] < sepUserVersion[0]){
return true
}else if(sepSystemVersion[0] === sepUserVersion[0]) {
if(sepSystemVersion[1] < sepUserVersion[1]) {
return true
}else if(sepSystemVersion[1] === sepUserVersion[1]) {
if(sepSystemVersion[2] <= sepUserVersion[2]) {
return true
}
}
}
return false
}
function checkValidVersion(systemVersion, userVersion) {
let sepSystemVersion = systemVersion.split('.');
let sepUserVersion = systemVersion.split('.');
if(sepSystemVersion[0] < sepUserVersion[0]) return true
if((sepSystemVersion[0] === sepUserVersion[0]) && (sepSystemVersion[1] < sepUserVersion[1])) {
return true
}else if((sepSystemVersion[1] === sepUserVersion[1]) && (sepSystemVersion[2] <= sepUserVersion[2])) {
return true
}
return false
}
function checkValidVersion(systemVersion, userVersion) {
let sepSystemVersion = systemVersion.split('.');
let sepUserVersion = systemVersion.split('.');
if(compareVersion(sepSystemVersion[0], sepUserVersion[0], "<")) return true
if(compareVersion(sepSystemVersion[0], sepUserVersion[0], "===") && compareVersion(sepSystemVersion[1], sepUserVersion[1], "<")) {
return true;
}else if(compareVersion(sepSystemVersion[1], sepUserVersion[1], "===") && compareVersion(sepSystemVersion[2], sepUserVersion[2], "<=")) {
return true;
}
return false;
}
function compareVersion(systemVersion, userVersion, compareOperator) {
switch (compareOperator) {
case "===":
return systemVersion === userVersion;
case "<=:
return systemVersion <=userVersion;
case "<":
return systemVersion < userVersion;
default:
new Error("유효하지 않은 연산자 입니다.");
}
}
위 코드보다 조금 더 효율적이고 유지보수에 용이한 코드를 생각해 보자!
중복 코드 줄이는 것까지야 생각할 수 있었지만, 추후의 유지보수를 위해 공통 코드를 모듈화 하는 것은 회사 선배분의 조언이 없었다면 생각조차 할 수 없었다.
switch문을 사용하는 방식 말고 eval() 이라는 자바스크립트 메서드를 통해서 더 간결하게 줄였었는데, 보안문제와 효율성 문제로 인해서 다시 switch문으로 변경하였다.
취업 준비를 하면서 포트폴리오랑 자소서에 유지보수가 가능한 코드를 작성하는 개발자가 되겠다고 적었었는데, 그때 그 마음을 잊은것은 아닌지 다시한번 돌아보는 계기가 되었다.