if else 語句引發的遐想 【編寫可讀代碼的藝術】讀書小記

條件語句

if-then語句

? 正常情況路徑在代碼中流向是否很分明?
? if-then語句在出現等號時流向是否正確?
? else語句是否有必要?
? else語句正確嗎?
? if語句和else語句正確嗎?它們是否弄反了?
? 正常情況是否跟在if后而非else后?

if-then-else語句

? 復雜的條件是否封裝成布爾函數調用了?
? 最常見情況放在前面嗎?
? 全部情況都覆蓋住了嗎?
? if-then-else語句是最好的選擇嗎?——用case語句代替是否更好?

case語句

? 各情況的安排次序有含義嗎?
? 每種情況對應的操作簡單嗎?——如需要調用別的子程序。
? case語句中的變量有實際意義嗎?它是為了用case語句而單純地定義出來的偽變量嗎?
? 缺省語句的用法是否合法(規范)?
? 用缺省語句檢查和報告異常情況嗎?
? 在C語言中,每一情況的結尾用了break了嗎?

關鍵思想

把條件、循環以及其他對控制流的改變做的越“自然”越好。運用一種方式使讀者不用停下來重復讀你的代碼。

比較下面兩行代碼:
while( bytes_received < bytes_expected )
while( bytes_expected > bytes_received )

很明顯第一段代碼更容易讀,因為變量在前面,被比較的值在前面,具體規則如下:

比較的左側 比較的右側
"被詢問的“表達式,它的值更傾向于不斷變化 用來做比較的表達式,它的值更傾向于常量

if/else 中代碼塊的順序

  • 首先處理正邏輯而不是負邏輯情況。例如,用 if(debug) 而不是 if(!debug)。
  • 先處理掉簡單情況。這種方式可能還會使得 if 和 else 在屏幕之內都可見,its fine。
  • 先處理有趣的或者是可疑的情況。

三目運算符

三目運算是為了將多行代碼縮減成一行,實際上實現效果一樣,而且不容易調試。但是度量代碼的可讀性方法不是行數,而是人們理解它所需的時間,所以建議如下:

默認情況下都使用 if/else,三目運算符只有在最簡單的情況下使用。

提早結束循環

通常來講可以通過return,continue來提早返回減少嵌套,使代碼更簡潔。

摘抄字書【代碼大全】【編寫可讀代碼的藝術】

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 第一部分 打好基礎 Laying the Foundation 第一章 歡迎進入軟件構建的世界 Welcome t...
    白樺葉閱讀 4,669評論 0 17
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,837評論 18 139
  • 經常隨手在本子上隨手畫,但也有用心的地方
    MrTes閱讀 246評論 6 1
  • 當微風 透過車窗拂過你臉頰 你看到 遠方田野里的綠 寬闊晴空里的藍 樹葉婆娑 花兒搖曳 你在想 成為田野里的一只蟲...
    Yes晴梔閱讀 320評論 0 0
  • 如果,我有一直馬良的神筆,我會給那些要飯的畫上飯…… 晚上看小朋友的作業,他如是寫到。 周六的時候,我從銀座超市出...
    以俗離俗閱讀 257評論 3 1