개발을 하던중 특정조건에 따라 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가 되었다!
'IT,프로그래밍 > Node.js' 카테고리의 다른 글
[Nest.js] 데코레이터(Decorator),Module,Controller,Provider란? (0) | 2021.07.12 |
---|---|
node.js crypto를 이용한 random string 얻는법 (0) | 2020.12.23 |
express-validator 에서 array 내부 object 검증 하는법 (0) | 2020.05.25 |
[Node.js] Redirect 를 data 와 함께 보내는법 (0) | 2020.01.22 |
[Node, express, ejs] i18next 써서 국제화 하기 [2] (5) | 2019.08.16 |