我們都很擅長流程控制,能寫出很好很復雜的if語句。但是有時過于興奮,更多的是過于自信而只寫了if,而沒有寫else。
這是一個爭論不休的話題,很多人,很多大師都認為有的情況下可以不寫else,只寫if。
支持 if 和 else 成對出現的人認為:不怕一萬 就怕萬一
認為 if 和 else 沒必要成對出現的人認為:不便于理解,太多沒用的東西。
我之前覺得也必須非要這樣成對,但是今天在工程中遇到了問題。就是當if不成立的時候,沒有相應的處理。
人非圣賢,硬件也不是永遠精確的,所以我還是建議成對的使用if和else.
**還有呢,不管是if還是else,處理的代碼一定要加{},即使處理只有一行代碼。**
更重要的是:
**條件控制是編程中與生俱來的一種結構,但對于很多人來說,除了給帶來麻煩外,沒有發現任何的用處。一次又一次,不斷發現,越少的if語句,越少的 switch語句,越少的循環,就會是越好的代碼。通常這其中的原因是程序員用編程語言實現了更好的抽象歸納。他們并不是有意識的避免使用控制結構。但他 們確實做到了這些。**
**如果是使用一種面向對象編程語言,我們可以用多態(polymorphism)來代替switch。同樣的技巧也能用在 if語句上,但如果邏輯太簡單,這樣做就有點得不償失。當使用一種有函數式特征的編程語言時,大部分的循環執行任務我們都可以用 map,filter,fold等實現。控制結構最終從代碼中消失,這是對代碼大有好處的事。**
還有很長的路要走!!
- 前言
- deprecated關鍵字
- 指針(內存泄露)
- 頭文件相互包含(Compiler error C2653: not a class or namespace name)
- 獲取一張圖片的width和height
- This function or variable may be unsafe.
- 智能指針陷阱
- string中的c_str()陷阱
- wstring與string的轉換
- windows下chrome瀏覽器插件不能安裝
- 重定義關鍵字
- 正確釋放vector的內存
- 獲取設備環境HDC
- 抽象類不能實例化對象(但是你明明定義的不是抽象類)
- 重載賦值運算符的自我賦值
- 程序中的變量未初始化
- 成對使用new和delete時要采取相同的形式
- 意想不到的除數為零
- map的初始化(插入數據)
- 正則表達式截取字符串
- 捕獲窗口之外的鼠標消息(鉤子還是??)
- 類中的靜態成員變量(static or const static)
- 有if就要有else(一定成對)
- map查找結果處理
- 使用using namespace std的壞習慣
- new一個指針數組、以及創建動態二維數組
- 使用太多的全局變量
- 沒有及時break出for循環
- vector使用erase后迭代器變成野指針
- C++函數的默認參數(重新定義默認參數)
- 0xC0000005: 讀取位置 xxx時發生訪問沖突
- std::string初始化、最快速判斷字符串為空
- 你開發的軟件安裝在C盤Program Files (x86)下產生的異常