在 Android Studio 中進(jìn)行源代碼的編輯時(shí),會對源代碼做即時(shí)的分析莫鸭,并且在編輯窗格的右上方顯示分析的結(jié)果潦匈。檢查程序在運(yùn)行時(shí)阱高,窗格右上方的角落會以一個(gè)眼睛的圖標(biāo)來表達(dá)。如果源代碼通過所有檢查條件茬缩,會顯示綠色的勾勾赤惊;源代碼有違反一項(xiàng)以上的警告規(guī)則顯示黃色的方塊;當(dāng)源代碼有違反一項(xiàng)以上的錯(cuò)誤規(guī)則凰锡,顯示紅色的圓圈包著驚嘆號未舟。
很多人在寫程序的時(shí)候都只關(guān)心編譯后能不能運(yùn)行,好進(jìn)行測試寡夹,因?yàn)槌绦蛞坏┯绣e(cuò)誤就會中斷編譯程序处面、阻擋工作的進(jìn)行,要等到錯(cuò)誤的源代碼被修正后才能繼績工作菩掏。而警告的訊息并不會阻擋工作的進(jìn)行魂角,就會變得無所謂、大多數(shù)的人都會選擇不予理會智绸。
這并不是一個(gè)好的開發(fā)習(xí)慣野揪,Android Studio 進(jìn)行的源代碼分析就像健康檢查一樣,用來顯示源代碼的健康程度瞧栗。當(dāng)健康檢查的報(bào)告中有數(shù)值超出標(biāo)準(zhǔn)值斯稳,雖然沒有達(dá)到疾病的程度,但代表身體已經(jīng)有一定的問題迹恐。如果繼續(xù)忽視不理挣惰,很有可能就會轉(zhuǎn)變成疾病,甚至危害生命。同樣的道理憎茂,當(dāng)分析的結(jié)果出現(xiàn)警告的訊息代表源代碼的寫法有一定程度出錯(cuò)的風(fēng)險(xiǎn)珍语。所以一但有警告訊息出現(xiàn),應(yīng)該要和錯(cuò)誤一樣認(rèn)真地看待并謹(jǐn)慎地處理竖幔。
不過板乙,有的時(shí)候特定的習(xí)慣性寫法或是團(tuán)隊(duì)的 Coding Convetion 可能會和工具默認(rèn)的檢查規(guī)則有沖突,但其實(shí)并不影響程序的運(yùn)行結(jié)果拳氢。舉例來說募逞,以下的源代碼是一般判斷布爾值的慣用寫法:
if (!flag) {
}
但是這樣的寫法由于 “!” 的寬度不寬,和判斷布爾值是 true 的源代碼差別沒有很大馋评,很容易因?yàn)榭绰┓沤樱瑢?dǎo)致修改程序時(shí)誤判而發(fā)生改錯(cuò)源代碼的情況。再者栗恩,我們的母語并不是英文透乾,所以在命名變量時(shí)常常詞不達(dá)意,甚至在過去的工作經(jīng)驗(yàn)中磕秤,遇到有人命名變量的語意與用途相反的情況乳乌,更大大地增加了這樣的情況出現(xiàn)的機(jī)率。
為了有效地提高防呆的機(jī)率市咆,我都習(xí)慣性地使用以下的方式來撰寫判斷式:
if (flag == false) {
}
雖然會多打好幾個(gè)字汉操,但是卻可以換來表達(dá)意思明確的效果。閱讀源代碼的人容易判斷區(qū)塊中到底是要運(yùn)行 true 還是 false 的邏輯蒙兰,不會被變量的名稱誤導(dǎo)形成邏輯上的混亂磷瘤。
但 Android Studio 默認(rèn)的檢查規(guī)則,在遇到以上的寫法卻會顯示以下的警告訊息:
flag == false can be simplified to !flag
Reports pointless or pointlessly complicated boolean expressions. Such expressions include anding with true, oring with false, equality comparison with a boolean literal, or negation of a boolean literal. Such expressions may be the result of automated refactorings not completely followed through to completion, and in any case are unlikely to be what the developer intended to do.
當(dāng)這樣的訊息與其他的警告混在一起就會造成在寫程序時(shí)的困擾搜变,因?yàn)闆]有辦法在第一時(shí)間就利用編輯窗格右上角的綠色勾勾采缚,了解程序是否已經(jīng)通過其他的檢查規(guī)則。當(dāng)看到窗格的右上角呈現(xiàn)黃色的方塊挠他,如果要確認(rèn)還要將鼠標(biāo)移到有問題的位置扳抽,才能夠判斷是不是因?yàn)橐陨系脑创a寫法所產(chǎn)生的警告訊息,或是還有其它的問題待修正殖侵!
這樣的動作如果在寫程序時(shí)頻繁地重復(fù)贸呢,會讓工作的效率下降很多,而且也會因?yàn)榫昧顺霈F(xiàn)怠惰的心態(tài)拢军,進(jìn)而忽略警告訊息造成程序出問題的風(fēng)險(xiǎn)增加楞陷。
所幸 Android Studio 的檢查規(guī)則是可以調(diào)整的,在 Settings 的對話窗口中選擇 “Editor->Inspections” 項(xiàng)目茉唉,就可開啟或關(guān)閉特定的檢查規(guī)則固蛾。以文章中的示范源代碼寫法為例结执,可以切換到 “Java->Control flow issues->Pointless boolean expression” 項(xiàng)目。如下圖所示取消勾選該項(xiàng)目魏铅,Android Studio 就不會再針對這項(xiàng)寫法進(jìn)行檢查昌犹。
有更動過的選項(xiàng)會以藍(lán)色的字體顯示,同時(shí)所屬的逐級向上分類項(xiàng)目也會顯示藍(lán)色览芳,以方便識別。