每天學點C++知識:不要節約程式碼行數

LynnShaw發表於2016-01-24

有個國外團隊檢測了 200 多個 C/C++ 開源專案,包括了 Php、Qt 和 Linux 核心等知名專案。於是他們每天分享一個錯誤案例,並給出相應建議。本篇案例來自 KDE4 原始碼。

錯誤程式碼:

說明:

一些程式設計師竭盡全力想把更多的程式碼壓縮到一行。他們尤其熱衷於“if”條件語句,把賦值和比較一次性完成。

一個典型的錯誤模式是使用 if (A = Foo() == Error) 這樣的表示式。上面我們正在處理的例項程式碼正是這種錯誤。

比較操作的優先順序高於賦值操作。這就是為什麼”mOp.del( usrc.dn() ) == -1″ 比較會先執行,然後“true”(1) 或“false”(0) 值被賦給變數 id。

如果 mOp.del() 返回“-1”,函式會終止;否則,函式會持續執行,“id”變數會被賦予一個錯誤的值。它的結果總為 0。

正確程式碼:

建議:

不要懶得去寫多餘的程式碼:畢竟複雜的表示式很難讀懂。首先進行賦值,然後再比較。這樣以後維護你程式碼的程式設計師也會輕鬆很多,也會減少出錯的可能。

今天的這個小技巧看起來很微不足道,不過我希望它會幫到你,牢牢記住並迫使自己寫乾淨整潔且正確的程式碼,而不是“看我有多專業!”的風格。

相關文章