表驱动法

表驱动法:表驱动方法是一种使你可以在表中查找信息,而不必用很多的逻辑语句(if或Case)来把它们找出来的方法。事实上,任何信息都可以通过表来挑选。在简单的情况下,逻辑语句往往更简单而且更直接。但随着逻辑链的复杂,表就变得越来越富有吸引力了。

前言

今天在某乎看到一个贴子,题主大概是问:一个程序员的水平能差到什么程度?
我由于好点就点了进去,之后就看到一段代码,大概如下:

if (languageSelected == 0) {
   locale = "zh";
} else if (languageSelected == 1) {
   locale = "zh";
} else if (languageSelected == 2) {
   locale = "en";
} else if (languageSelected == 3) {
   locale = "ge";
} else if (languageSelected == 4) {
   locale = "sp";
} else if (languageSelected == 5) {
   locale = "fr";
} else if (languageSelected == 6) {
   locale = "du";
}

经过

乍一看,好像也没什么毛病,感觉还可以呀,简单易懂,别人接手也好维护。然后很不服气就去看评论,看看某乎大神有没有更好的写法。
之后看到一系列回答:有跟我一样感觉还可以啊,有说用switch看起来更好的,种种....最后看到一个说用表驱动法的。
上班的时候果断某度了一下这个xx驱动法,究竟有多么好。然后就用表驱动法重构了下这段代码,从n行代码变成了3行代码。

String[] locales = {"zh", "zh", "en", "ge", "sp", "fr", "du"};
for (int i = 0; i < 7; i++) {
    if (languageSelected == i) locale = locales[i];
}

结果

真香~
这段重构只是表驱动法中一个简单的用法,我们可以深入研究,更多的运用到日常开发中,不仅能干掉不少冗余代码,还能让同事对你的编码能力刮目相看。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。