表驅(qū)動法:表驅(qū)動方法是一種使你可以在表中查找信息空免,而不必用很多的邏輯語句(if或Case)來把它們找出來的方法。事實(shí)上欢搜,任何信息都可以通過表來挑選夯秃。在簡單的情況下胰耗,邏輯語句往往更簡單而且更直接轰胁。但隨著邏輯鏈的復(fù)雜阴颖,表就變得越來越富有吸引力了凡泣。
前言
今天在某乎看到一個貼子浅缸,題主大概是問:一個程序員的水平能差到什么程度轨帜?
我由于好點(diǎn)就點(diǎn)了進(jìn)去,之后就看到一段代碼衩椒,大概如下:
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";
}
經(jīng)過
乍一看蚌父,好像也沒什么毛病,感覺還可以呀毛萌,簡單易懂苟弛,別人接手也好維護(hù)。然后很不服氣就去看評論阁将,看看某乎大神有沒有更好的寫法膏秫。
之后看到一系列回答:有跟我一樣感覺還可以啊,有說用switch看起來更好的做盅,種種....最后看到一個說用表驅(qū)動法的缤削。
上班的時候果斷某度了一下這個xx驅(qū)動法,究竟有多么好吹榴。然后就用表驅(qū)動法重構(gòu)了下這段代碼亭敢,從n行代碼變成了3行代碼。
String[] locales = {"zh", "zh", "en", "ge", "sp", "fr", "du"};
for (int i = 0; i < 7; i++) {
if (languageSelected == i) locale = locales[i];
}
結(jié)果
真香~
這段重構(gòu)只是表驅(qū)動法中一個簡單的用法图筹,我們可以深入研究帅刀,更多的運(yùn)用到日常開發(fā)中,不僅能干掉不少冗余代碼远剩,還能讓同事對你的編碼能力刮目相看扣溺。