guthub_gist_程式碼區塊

2017年8月30日 星期三

C語言中,if判斷式後的單一行statement也要加上大括號的有力例證 ( Persuasive points for a C language coding rule about even one line statement for “if/else” keyword should be enclosed in curly braces. )

Rules




    關於這條Coding Rule,雖然Google與Facebook等軟體巨擘們沒有強制要自己的員工加上大括號;並且以我過往的工作經驗看來,同事們對這條規矩的回饋總有雜音,想必大家都很糾結。

    這裡提供一些傾向於要加括號的有力資訊 (而不只是感覺上加了比較好) 給大家參考:


1. 注重安全性的MISRA C的規定:



2. Apple goto fail事件的低級Bug

提出一個發生在2012年關於Apple公司的真實案例,應該更有臨場感,詳細請參考文章 (https://coolshell.cn/articles/11112.html) ,文章中思考的面向頗多,推薦一讀,這裡只節錄一小段:
…如我們強制使用語句塊括號,那麼,這兩個goto fail都會在一個if的語句塊裡,而且也容易維護並且易讀。……還是分多行,加上大括號會好一些。……雖然寫起來有點囉嗦,但利人利己。


3. 很容易產生疑慮的案例

TAB或空白鍵縮排因為不容易顯示出差異,所以很容易被弄錯,下面這種案例其實並不罕見,若能多加了大括號就會少掉很多問題。

總而言之

    就算只有一行statement也加上大括號,相對安全很多,又不大幅影響可讀性(缺點只是讓程式碼頁面稍長),為什麼不加呢?