表示式和基本語句的規範

老司機的詩和遠方發表於2020-04-06

真正的高手對於自動語法語句的規範也是非常講究或者說有自己一套優美風格。
(1)如果程式碼行中的運算子比較多,用括號確定表示式的操作順序,避免使用預設的優先順序
(2)不要編寫太複雜的複合表示式
(3)不要有多用途的複合表示式
如:d=(a=b+c)+r;
(4)不要把程式中的複合表示式與“真正的數學表示式”混淆

if語句效率
(5)不可將布林變數直接與TRUE、FALSE或者1,0進行比較。因為對於bool來說零值為假,記為FALSE,任何非零值都是“真”,記為TRUE。TRUE究竟是什麼值要看平臺,沒有什麼的統一標準。例如VC則為1.而VB則為-1.
不要使用下面的風格:
if(flage == TRUE)
if(flage == 1)
if(flage == FALSE)
if(flage == 0)
正確使用:
if(flage)
if(!flage)
(6)應當將整形變數用“==”或“!=”直接與0比較。正確做法:
if(value ==0)
if(value !=0)
錯誤的做法:會讓人誤解是bool
if(value)
if(!value)
(7)浮點變數與零值比較,不可將浮點變數用“==”或“!=”與任何數字比較。無論是float還是double型別的變數,都有精度限制。所以一定要避免將浮點變數用“==”或“!=”與數字比較,應該設法轉化成>=或<=形式。假設浮點變數的名字為x,應當將
if(x == 0.0)//隱含錯誤的比較
轉換:
if((x>=-EPSINON)&&(x<=EPSINON))
其中EPSINON是允許的誤差(即精度)
(8)指標變數與0值比較。應當將指標變數寫成“==”或“!=”與NULL比較。
正確寫法:
if(p==NULL)//p與NULL顯示比較,強調p是指標變數
不要寫成
if(p==0)//容易讓人誤解p是整形變數
或者
if(p)//讓人理解為布林變數

迴圈語句效率
(1)提高迴圈體效率的基本辦法是降低迴圈體的複雜性。多重迴圈中,如果有可能,應當將最長的迴圈放在最內層,最短的迴圈放在最外層,以減少CPU跨切迴圈層的次數,如下圖:
這裡寫圖片描述
(2)迴圈體有邏輯判斷的時候,提高效率的做法是將條件判斷放在迴圈外面。如果迴圈的次數不大的時候,提高的效率就不明顯,要是迴圈的次數比較大的話提高的效率就會明顯
這裡寫圖片描述
(3)不可在for迴圈體內修改迴圈變數,防止for迴圈失去控制。
(4)建議for語句的迴圈控制變數的取值採用“半開半閉”寫法。
這裡寫圖片描述

switch語句
(1)每個case語句的結尾不要忘了加break,否則將導致多個分支重疊,除非有意使多個分支重疊!
(2)不要忘記最後加個default,即使程式不需要default處理,以防程式出錯。

相關文章