[TIL] 20230103

C____JIN·2023년 1월 3일
0

TIL 2.0

목록 보기
4/4
post-thumbnail
post-custom-banner

마무리

버전 비교

두 버전을 비교하는 코드를 작성했다.
예를 들어 시스템에서 요구하는 최소 버전이 있는데, 사용자의 버전이 시스템의 최소 요구 버전을 만족하는지 확인하는 함수

  • 최초작성
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문으로 변경하였다.
취업 준비를 하면서 포트폴리오랑 자소서에 유지보수가 가능한 코드를 작성하는 개발자가 되겠다고 적었었는데, 그때 그 마음을 잊은것은 아닌지 다시한번 돌아보는 계기가 되었다.

아직 멀었다...

profile
개발 블로그🌐 개발일지💻
post-custom-banner

4개의 댓글

comment-user-thumbnail
2023년 9월 7일
답글 달기
comment-user-thumbnail
2023년 9월 7일
답글 달기
comment-user-thumbnail
2023년 9월 7일

NAVER

답글 달기
comment-user-thumbnail
2023년 9월 7일

aaaa

답글 달기