我碰到一個程序是一些具有特殊的輸出中,我有幾個if語句是這樣的:||和&&在一個單一的if語句
if((m.getLeft(position).state == position.state.wall || m.getLeft(position).state == position.state.border)
&& (m.getBelow(position).state == position.state.open || m.getBelow(position).state == position.state.visited)){
check = true;
}
哪裏我都& &和||在相同條件下使用。如果getLeft()中的單元格是牆或邊框,並且getBelow()中的單元格是打開或訪問的,我希望布爾檢查爲真。
這段代碼,我現在編寫的方式,是否正確執行此檢查?也許更重要的是,寫這樣的陳述是否可憐的形式?將它分成兩個陳述會更好嗎?
我不確定我看到的特性是由這些語句還是別的,我的問題更多的是關於一般性的最佳實踐。
編輯:謝謝你的所有輸入。我很懷疑(這太複雜了),這就是爲什麼我按照我的方式構思了我的問題。
EDIT(一年後,回頭看)(重述以上更發奮)對上帝的愛,不要寫類似於上面的if
聲明任何東西。如果您發現自己的代碼行類似,請記住occam's razor可能比編程更適用。
您的if語句非常複雜。我認爲這使得難以理解。我認爲您需要的REAL解決方案是將其分解爲兩個if語句,或者重構您的方法以不需要這種複雜化。 – theJollySin 2013-02-10 06:11:17
我看不到這裏的複雜性或真正的問題。如果前兩個條件中的任何一個解析爲「真」,並且後兩個條件中的任何一個解析兩個「真」......則將「檢查」設置爲「真」。這是一個非常基本的if語句。 – 2013-02-10 06:20:25