尤達表達式


尤達表達式是什么?

  尤達表達式是計算機編程中的一種風格,其中表達式的兩個部分與條件語句中的典型順序相反。
  這種風格的命名,來源於星球大戰的一個角色,絕地大師尤達(Yoda)。劇中,該角色喜歡以顛倒的語序說英語。比如“當九百歲你活到,看起來很好你將不”
  下面舉個栗子:

// 正常的寫法
if(number == 7){/* code */}

// 尤達表達式
if(7 == number){/* code */}

  特點就是:將表達式的常量部分放在條件語句的左側

Yoda

為什么要避免使用尤達表達式

  評判一個東西的好壞,通常都需要比較。那就先看看尤達表達式有什么優缺點

優點

  • 捕捉編寫程序意外引起的錯誤

  例如以下判斷,由於判斷相等少寫了一個=號,導致程序運行中發生意外的賦值操作

if (number = 7) { /* code */ }

  而使用尤達表達式,則可以在編譯時捕捉到這個錯誤

if (7 = number) { /* code */ } // Uncaught ReferenceError: Invalid left-hand side in assignment
  • 解決不安全的null類型操作

  例如Java中的equals比較

String myString = null;
if (myString.equals("hehe")) { /* code */ } // This causes a NullPointerException in Java

  尤達表達式的方式可以避開

String myString = null;
if ("hehe".equals(myString)) { /* code */ } 

缺點

  與常規的編程直線思維相悖,造成代碼閱讀和理解上的不順暢,缺乏可讀性。

總結

  尤達表達式的優點,其實可以通過其他方式去避免所犯的錯誤。例如第一個條件語句寫成賦值語句,可以由代碼檢查工具檢測出來。反而是可讀性的缺陷,影響多人寫作開發和維護。所以,要避免使用尤達表達式。

怎么規避尤達表達式

  書寫條件語句時,避免常量在前,變量在后去進行比較。應該按變量在前,常量在后的方式去書寫。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM