if语句使用建议
??下面代碼判斷字符串不相同,很自然就用了邏輯!,實際上用法是錯誤的。
if (!strcmp(str1, str2)) { // ... }??因為strcmp返回的是int類型:
如果返回值小于0,則表示str1小于str2。
如果返回值等于0,則表示str1等于str2。
如果返回值大于0,則表示str1大于str2。
??判斷兩個字符串是否相等,你會發現,增加了!判斷會讓人多思考一下。
if (!strcmp(str1, str2)) {// str1,str2字符相等 }應該這樣做:
if (strcmp(str1, str2) == 0) {// str1,str2字符相等 }但君君更喜歡這樣寫:
bool isEqual = strcmp(str1, str2) == 0; if (isEqual) {// str1,str2字符相等 }??特別地,不要在同一行寫if語句。比如:
if (success) ...;??因為有時候復制粘貼時會將語句寫成:
if (success) ; // 相當于無效代碼??或:
if (success) ... // 突然被判斷了??突然被判斷了,導致該執行的,卻不會執行了,或者偶爾執行。這會導致程序莫名的bugs,有時候可以有時候不可以的錯覺。
??if加花括號還有一個好處是,復制代碼復制不全時候編譯器會報錯,但如果不加花括號,有時候它不會報錯,這就意外地增加莫名的bugs了,很鬧心的。
??因為switch使用起來不夠穩定,我們常常會忘記添加break中斷語句,導致邏輯不正確了。我們寫代碼也是這樣,寫出穩定的代碼,首先你要代碼看起來讓人舒服,不會讓人有過多的思考。
??最后,如果嚴格遵守規則會使你的代碼看起來很糟糕,請隨意打破它。
總結
- 上一篇: PDM麦克风在ADAU1761上的应用详
- 下一篇: java通过poi操作word创建表格