转载

JavaScript 重构 if-else 语句

今天在写一个代码的时候,发现在我们的代码里有一个很复杂的if-else语句——主要是在开发的过程中,业务在不断地变化。

我们有A,B,C,D四个不同的类别,在最开始的时候只有三个类别,并且两个类别是做同样的事:

function categoryHandle(category) {     if(category !== 'A') {       console.log('B, C');     } else {       console.log('A');     } } 

接着,出现了类别D——它与B和C相比来说,有一个不同的任务,而它又和B和C有一个相同的任务。于是,代码变成了这样。

function categoryHandle(category) {   if(category !== 'A') {     if(category === 'D') {       console.log('D');     } else {       console.log('B,C');     }     console.log('B, C ,D')   } else {     console.log('A');   } } 

然后,我的第一想法是这样的:

function categoryHandle(category) {   if(category === 'A') {     console.log('A');   } else if (category === 'B'){     console.log('B');   } else if (category === 'C'){     console.log('D');   }else if (category === 'D'){     console.log('D');   } } 

当然我们也可以用switch语句来做,但是我真不想这样想。接着,在某一个瞬间我想到了使用JavaScript的奇技淫巧来完成这个工作:

function categoryHandleRefactor(category) {   var categoryAction = {     'A': {       run: function () {         console.log('A')       }     },     'B': {       run: function () {         console.log('B')       }     },     'C': {       run: function () {         console.log('C')       }     },     'D': {       run: function () {         console.log('D')       }     }   };   categoryAction[category].run(); } 

生活果然是需要想象力的。

原文  http://www.phodal.com/blog/refactor-javascript-ifelse-object-function/
正文到此结束
Loading...