華為軟體編程規範學習(四)--可讀性
4-1:注意運算子的優先順序,並用括弧明確運算式的操作順序,避免使用預設優先順序
說明:防止閱讀程式時產生誤解,防止因預設的優先順序與設計思想不符而導致程式出錯。
樣本:下列語句中的運算式
word = (high <<8) | low (1)
if ((a | b)&& (a & c)) (2)
if ((a | b) < (c& d)) (3)
如果書寫為:
high << 8 | low
a | b && a& c
a | b < c & d
由於
high << 8 | low = ( high << 8) | low,
a | b && a& c = (a | b) && (a & c),
(1)(2)不會出錯,但語句不易理解;
a | b < c & d= a | (b< c)& d,(3)造成了判斷條件出錯。
4-2:避免使用不易理解的數字,用有意義的標識來替代。涉及物理狀態或者含有物理意義的常量,不應直接使用數字,必須用有意義的枚舉或宏來代替
樣本:如下的程式可讀性差。
if(Trunk[index].trunk_state == 0){ Trunk[index].trunk_state = 1; ... // program code}
應改為如下形式。
#define TRUNK_IDLE 0#define TRUNK_BUSY 1if(Trunk[index].trunk_state == TRUNK_IDLE){ Trunk[index].trunk_state = TRUNK_BUSY; ... // program code}
4-1:來源程式中關係較為緊密的代碼應儘可能相鄰
說明:便於程式閱讀和尋找。
樣本:以下代碼布局不太合理。
rect.length = 10;char_poi = str;rect.width = 5;
若按如下形式書寫,可能更清晰一些。
rect.length = 10;rect.width = 5; // 矩形的長與寬關係較密切,放在一起。char_poi = str;
4-2:不要使用難懂的技巧性很高的語句,除非很有必要時
說明:高技巧語句不等於高效率的程式,實際上程式的效率關鍵在於演算法。
樣本:如下運算式,考慮不周就可能出問題,也較難理解。
*stat_poi ++ += 1;* ++ stat_poi += 1;
應分別改為如下:
*stat_poi += 1;stat_poi++; // 此二語句功能相當於“* stat_poi ++ += 1; ”++ stat_poi;*stat_poi += 1; // 此二語句功能相當於“ * ++ stat_poi += 1; ”