IT,프로그래밍/Node.js

[better code] if else, case 안쓰고 분기하는법

개발을 하던중 특정조건에 따라 if else 나 case문으로 분기를 하는 경우가 종종있었는데

항상 보기가 안좋았고 다른 방법이 없을까 고민을 했었다

const processFunc = reqire('./processFunctions');

.
.
.
switch(type){
	case 'printing' :
    		processFunc.printingCaseFunc();
    		break;
	case 'cutting' : 
    		processFunc.cuttingCaseFunc();
    		break;
	case 'molding' : 
    		processFunc.moldingCaseFunc();
    		break;
	case 'sheeting' : 
    		processFunc.sheetingCaseFunc();
    		break;
	case 'design' : 
    		processFunc.designCaseFunc();
    		break;
	default : 
     		throw New Error('wrong type');
}

 

위와 같은 소스에서 case문이 늘어나면 늘어날수록 보기가 힘들어지고 좀더 깨끗하게 쓰는방법이 없을까 고민을 하게되었다.

 

그러던중 자바스크립트에서 object의 value값으로 함수가 올수 있다는 것을 이용해서 다음과 같이 코드를 정리했다.

 

const {
  printingCaseFunc,
  cuttingCaseFunc,
  moldingCaseFunc,
  sheetingCaseFunc,
  designCaseFunc,
} = require('./processFunctions');
.
.
.
.
const detailCase = {
   printing: printingCaseFunc,
   cutting: cuttingCaseFunc,
   molding: moldingCaseFunc,
   sheeting: sheetingCaseFunc,
   design: designCaseFunc,
};
const caseFunc = detailCase[detailInfo.service];
if (!caseFunc) {
    return new Error('Wrong Case');
}

 

같은 내용이지만 훨씬 직관적이고 보기 편해졌다.

 

기존에 require을 통째로 했다면 이번에는 const {} = require(); 을 사용해서 분해할당 해줬다.

그리고 switch case로 복잡하게 분류했던것을 detailCase라는 object 를 선언 함으로써 key value방식으로 분기하였다.

 

이후 caseFunc에서 값이 true 인지 false(정상 type이 아님) 을 이용해서 

switch case 문의 default를 구현하였다.

 

이로서 훨씬보기좋은 better code가 되었다!