**:
華為軟體程式設計規範學習(八)--可測性
8-1:程式設計時要經常注意**的效率
說明:**效率分為全域性效率、區域性效率、時間效率及空間效率。全域性效率是站在整個系統的角度上的系統效率;區域性效率是站在模組或函式角度上的效率;時間效率是程式處理輸入任務所需的時間長短;空間效率是程式所需記憶體空間,如機器**空間大小、資料空間大小、棧空間大小等。
8-2:在保證軟體系統的正確性、穩定性、可讀性及可測性的前提下,提高**效率
說明:不能一味地追求**效率,而對軟體的正確性、穩定性、可讀性及可測性造成影響。
8-3:區域性效率應為全域性效率服務,不能因為提高區域性效率而對全域性效率造成影響
8-4:通過對系統資料結構的劃分與組織的改進,以及對程式演算法的優化來提高空間效率
說明:這種方式是解決軟體空間效率的根本辦法。
示例:如下記錄學生學習成績的結構不合理。
[plain]view plain
copy
typedef unsigned char byte;
typedef unsigned short word;
typedef struct student_score_stru
student_score;
因為每位學生都有多科學習成績,故如上結構將占用較大空間。應如下改進(分為兩個結構),總的存貯空間將變小,操作也變得更方便。
[plain]view plain
copy
typedef struct student_stru
student;
typedef struct student_score_stru
student_score;
8-5:迴圈體內工作量最小化
說明:應仔細考慮迴圈體內的語句是否可以放在迴圈體之外,使迴圈體內工作量最小,從而提高程式的時間效率。
示例:如下**效率不高。
[plain]view plain
copy
for (ind = 0; ind
語句「back_sum = sum;」完全可以放在for語句之後,如下。
[plain]view plain
copy
for (ind = 0; ind
back_sum = sum;/* backup sum */
其他
8-1:仔細分析有關演算法,並進行優化
8-2:仔細考查、分析系統及模組處理輸入(如事務、訊息等)的方式,並加以改進
8-3:對模組中函式的劃分及組織方式進行分析、優化,改進模組中函式的組織結構,提高程式效率
說明:軟體系統的效率主要與演算法
、處理任務方式、系統功能及函式結構有很大關係,僅在**上下功夫一般不能解決根本問題。
8-4:程式設計時,要隨時留心**效率;優化**時,要考慮周全
8-5:不應花過多的時間拼命地提高呼叫不很頻繁的函式**效率
說明:對**優化可提高效率,但若考慮不周很有可能引起嚴重後果。
8-6:要仔細地構造或直接用彙編編寫呼叫頻繁或效能要求極高的函式
說明:只有對編譯系統產生機器碼的方式以及硬體系統較為熟悉時,才可使用彙編嵌入方式。嵌入彙編可提高時間及空間效率,但也存在一定風險。
8-7:在保證程式質量的前提下,通過壓縮**量、去掉不必要**以及減少不必要的區域性和全域性變數,來提高空間效率
說明:這種方式對提高空間效率可起到一定作用,但往往不能解決根本問題。
8-8:在多重迴圈中,應將最忙的迴圈放在最內層
說明:減少cpu切入迴圈層的次數。
示例:如下**效率不高。
[plain]view plain
copy
for (row = 0; row< 100; row++)
} 可以改為如下方式,以提高效率。
[plain]view plain
copy
for (col = 0; col< 5; col++)
} 8-9:儘量減少迴圈巢狀層次
8-10:避免迴圈體內含判斷語句,應將迴圈語句置於判斷語句的**塊之中
說明:目的是減少判斷次數。迴圈體中的判斷語句是否可以移到迴圈體外,要視程式的具體情況而言,一般情況,與迴圈變數無關的判斷語句可以移到迴圈體外,而有關的則不可以。
示例:如下**效率稍低。
[plain]view plain
copy
for (ind = 0; ind < max_rect_number; ind++)
else
} 因為判斷語句與迴圈變數無關,故可如下改進,以減少判斷次數。
[plain]view plain
copy
if (data_type ==rect_area)
} else
} 8-11:盡量用乘法或其它方法代替除法,特別是浮點運算中的除法
說明:浮點運算除法要占用較多cpu資源。
示例:如下表示式運算可能要佔較多cpu資源。
[plain]view plain
copy
#define pai 3.1416
radius =circle_length / (2 * pai);
應如下把浮點除法改為浮點乘法。
[plain]view plain
copy
#define pai_reciprocal (1 / 3.1416 ) // 編譯器編譯時,將生成具體浮點數
radius =circle_length * pai_reciprocal / 2;
8-12:不要一味追求緊湊的**
說明:因為緊湊的**並不代表高效的機器碼。
華為軟體程式設計規範學習 四 可讀性
華為軟體程式設計規範學習 四 可讀性 4 1 注意運算子的優先順序,並用括號明確表示式的操作順序,避免使用預設優先順序 說明 防止閱讀程式時產生誤解,防止因預設的優先順序與設計思想不符而導致程式出錯。示例 下列語句中的表示式 word high 8 low 1 if a b a c 2 if a b...
C語言程式設計規範(華為軟體精英挑戰賽)
參加華為軟體精英挑戰賽,複習了下基本的c語言程式設計規範,並做了小結!標頭檔案禁止包含用不到的標頭檔案 放置介面宣告 不適合放實現 禁止在標頭檔案中定義變數 可能出現重定義錯誤 標頭檔案應向穩定方向包含 乙個標頭檔案的變化,會導致所有包含該標頭檔案 的重新編譯 禁止標頭檔案迴圈依賴 減少 依賴深度過...
軟體專案程式設計規範
1.每個檔案級模組必須編寫乙個說明,模組說明要求以注釋的形式出現在模組的首部,要寫清楚該模組的功能,並寫明編寫人及編寫時間 為了以後系統整合時交流方便一些 2.對於每乙個函式都應給出函式說明,描述其函式功能 引數說明以及返回值說明,如果是修改別人的檔案,應寫明編寫人及修改時間 3.標頭檔案書寫規範 ...