一、前言
這篇文章將會講述 if 判斷式的簡寫與可讀性維護。
二、if 判斷式
這是一個學習程式語言的必經之路,也是許多條件與判斷的核心邏輯。
1. 整體架構
if(true)
{
//Do Something.
}
if 判斷式式相對比較容易理解的邏輯判斷,也是邏輯判斷的基礎,他的架構並不複雜,總共有四行,第一行是判斷式本身,第二與第四行是程式碼區塊、第三行可以擴增,並且執行核心運算。
它的第二種排版為下:
if(true){
//Do Something.
}
這也是很多程式員在爭執的程式排版方式。
2. 判斷部分
「if(true)」的部分,裡面就是一個布林值,只要為 ture 就可以執行之後程式碼區塊的內容,布林值的類型有許多種函式都能辦到,譬如:
a: A==B
b: Component.CompareTag("Obj")
c: Physics.Raycast(...)
d: bool
以上內容都可以放置在 if 判斷式裡面。
3. else
正常來說,如果判斷式為 true 才會觸發某段程式碼,而有些時候我們會希望沒有 true 的時候,也就是判斷式為 false 會觸發另一段程式碼。
if(true){
//Do Something.
} else
{
//Do Something.
}
三、bool 的簡潔寫法
那問題來了,他們看起來非常的複雜,也就是說程式碼行數太多了,我們有一些方式可減少程式碼的長度。
1. 單行陳述式
如果程式碼只需要執行一個函式或改變一個變數,那就可以用一個比較簡潔的寫法,如下所示:
if(true) Do Something;
2. 是否判斷
如果判斷式最後會輸出一個布林值為 true 或 false 的話,有一個較為簡單的寫法可以使用,如下所示:
bool isHit;
isHit = if(Physics.Raycast(...));
3. 三元運算子 (Ternary Operator)
如果是判斷是否,並且分別對同一個變數賦予兩個不同的值,那就可以考慮三元運算子,不過要注意的是,三元運算子的可讀性比較差,因此要把命名規則寫好,也可以選擇註解或把程式碼封裝好。
int result;
bool condition;
result = (condition) ? value1 : value2;
4. 例外-null 值判斷
在 Unity 程式撰寫中,雖然有上述的幾種簡寫方式,但是在 null 值得維持可讀性上面,卻是比較長的程式碼會比較好讀。
if ( A != null)
{
//Do Something.
}
上述的程式馬反而會比有縮減的程式碼來得好讀:
if ( A != null)
//Do Something.
四、後記
這篇文章原本是想用來講述雷射是一種布林值,不過後面發現都在講述 if 判斷式本身,所以這篇文章就被獨立出來了。