今天在写一个代码的时候,发现在我们的代码里有一个很复杂的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(); }
生活果然是需要想象力的。