表驱动法
2019-06-27 本文已影响0人
HulkHulkHulk
表驱动法:表驱动方法是一种使你可以在表中查找信息,而不必用很多的逻辑语句(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];
}
结果
真香~
这段重构只是表驱动法中一个简单的用法,我们可以深入研究,更多的运用到日常开发中,不仅能干掉不少冗余代码,还能让同事对你的编码能力刮目相看。