第七章 把控制流變得易讀

## 第七章 把控制流變得易讀

### 1.條件語句中的參數的順序

比較的左側放置傾向于變化的,比較的右側是放置不變化的

```

if(age > 18) 比 if(18 < age) 更加清晰

```

### 2.if/else語句塊的順序

雖然if/else語句的順序可以隨意調換愈案,但是遵循下面的規(guī)則會使代碼更加清晰:

- 首先處理正邏輯,不先處理負邏輯变勇。如if(debug) 好于 if(!debug)。

- 先處理簡單的邏輯贴唇。

- 先處理有趣或者可疑的情況搀绣。

### 3.避免使用三目運算符

所有的三目運算符形式都可以寫成if/else形式。

**關鍵思想:只有當最簡單的情況可以使用三目運算符戳气。**

### 4.避免使用do链患、while循環(huán)

### 5.從函數中提前返回

編寫如下代碼:

```

public boolean constains(String string,String subStr) {

if(string == null || subStr == null ){

return false;

}

if(string.equals(subStr)) {

return true;

}

}

```

### 6.最小化嵌套

嵌套很深的代碼很難理解,如下代碼:

```

if(userResult == SUCCESS) {

if(permissonResult != SUCCESS) {

reply.write("permissonResult error");

reply.done();

return;

}

reply.write("");

} else {

reply.write(userResult);

}

reply.done();

```

最初代碼是簡單的:

```

if(userResult == SUCCESS) {

reply.write("");

} else {

reply.write(userResult);

}

reply.done();

```

但是后來又添加個一個新的邏輯瓶您,代碼變成了下面這樣:

```

if(userResult == SUCCESS) {

if(permissonResult != SUCCESS) {

reply.write("permissonResult error");

reply.done();

return;

}

reply.write("");

} else {

reply.write(userResult);

}

reply.done();

```

**關鍵思想:當你對代碼修改時麻捻,從全新的角度來審視,從整體上來看修改后的影響呀袱。**

可以通過提早返回來減少嵌套:

```

if(userResult != SUCCESS) {

reply.write(userResult);

reply.done();

return;

}

if(permissonResult != SUCCESS) {

reply.write("permissonResult error");

reply.done();

return;

}

reply.write("");

reply.done();

```

如何減少循環(huán)內的嵌套贸毕,在循環(huán)中可以使用continue來進實現類似提前返回的效果

```

for(int i = 0; i < results.size(); i ++){

if(results[i] == null) continue;

count++;

if(results[i].getName().equals("")) continue;

print(results[i].getName());

}

```

###總結

- 寫一個比較的時候,把改變的值寫在左邊并且把更穩(wěn)定的值寫在右側夜赵。

- 重新排列if/else語句明棍。通常來講,先處理正確的寇僧、簡單的摊腋、有趣的情況。

- 避免使用三目運算符嘁傀、do/while循環(huán)兴蒸。

- 減少代碼的嵌套。盡量寫的更加線性细办。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末橙凳,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌痕惋,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件娃殖,死亡現場離奇詭異值戳,居然都是意外死亡,警方通過查閱死者的電腦和手機炉爆,發(fā)現死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門堕虹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人芬首,你說我怎么就攤上這事赴捞。” “怎么了郁稍?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵赦政,是天一觀的道長。 經常有香客問我耀怜,道長恢着,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任财破,我火速辦了婚禮掰派,結果婚禮上,老公的妹妹穿的比我還像新娘左痢。我一直安慰自己靡羡,他們只是感情好,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布俊性。 她就那樣靜靜地躺著略步,像睡著了一般。 火紅的嫁衣襯著肌膚如雪定页。 梳的紋絲不亂的頭發(fā)上纳像,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天,我揣著相機與錄音拯勉,去河邊找鬼竟趾。 笑死,一個胖子當著我的面吹牛宫峦,可吹牛的內容都是我干的岔帽。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼导绷,長吁一口氣:“原來是場噩夢啊……” “哼犀勒!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤贾费,失蹤者是張志新(化名)和其女友劉穎钦购,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體褂萧,經...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡押桃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了导犹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唱凯。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖谎痢,靈堂內的尸體忽然破棺而出磕昼,到底是詐尸還是另有隱情,我是刑警寧澤节猿,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布票从,位于F島的核電站,受9級特大地震影響滨嘱,放射性物質發(fā)生泄漏纫骑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一九孩、第九天 我趴在偏房一處隱蔽的房頂上張望先馆。 院中可真熱鬧,春花似錦躺彬、人聲如沸煤墙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仿野。三九已至,卻和暖如春她君,著一層夾襖步出監(jiān)牢的瞬間脚作,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工缔刹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留球涛,地道東北人。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓校镐,卻偏偏與公主長得像亿扁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子鸟廓,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理从祝,服務發(fā)現襟己,斷路器,智...
    卡卡羅2017閱讀 134,638評論 18 139
  • 1. Java基礎部分 基礎部分的順序:基本語法牍陌,類相關的語法擎浴,內部類的語法,繼承相關的語法毒涧,異常的語法贮预,線程的語...
    子非魚_t_閱讀 31,602評論 18 399
  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗。 張土汪:刷leetcod...
    土汪閱讀 12,740評論 0 33
  • **2014真題Directions:Read the following text. Choose the be...
    又是夜半驚坐起閱讀 9,442評論 0 23
  • 美國著名經濟學家保羅.托馬斯和大衛(wèi).伯恩档玻,在長期跟蹤企業(yè)的發(fā)展研究出執(zhí)行力時候怀泊,認為企業(yè)成功20%靠策略,60%靠...
    地主有余糧閱讀 607評論 0 0