高級篇第八章高質(zhì)量編程_第1頁
高級篇第八章高質(zhì)量編程_第2頁
高級篇第八章高質(zhì)量編程_第3頁
高級篇第八章高質(zhì)量編程_第4頁
高級篇第八章高質(zhì)量編程_第5頁
已閱讀5頁,還剩64頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、上章回顧哈希函數(shù)的構(gòu)造方法有那些哈希表中處理的方法有那些家園家園-開發(fā)板商城上海第八章高質(zhì)量編程規(guī)范家園家園-開發(fā)板商城上海預(yù)習(xí)檢查談?wù)勈裁词呛玫木幊田L(fēng)格?什么是內(nèi)存泄露,如何防范內(nèi)存泄露?什么是野指針,如何杜絕?家園家園-開發(fā)板商城上海課程目標(biāo)本章概述闡述如何進(jìn)行高質(zhì)量的編程,以及注意事項本章目標(biāo)了解高質(zhì)量編程注意的方方面面從代碼風(fēng)格,算法,方便調(diào)試,性能等。重點內(nèi)存分配與,懸掛指針家園家園-開發(fā)板商城上海本章結(jié)構(gòu)家園家園-開發(fā)板商城上海微觀上高質(zhì)量宏觀上高質(zhì)量高質(zhì)量編程規(guī)范程序員的態(tài)度7.1 程序員的態(tài)度程序員的弱點不太愿意測試的代碼不愿意REVIEW團(tuán)隊隊員的代碼程序員重點的代碼沒有 B

2、UG 來保證家園家園-開發(fā)板商城上海7.1 程序員的態(tài)度程序員自身該做的工作:仔細(xì)設(shè)計編寫代碼單元測試功能測試代碼 REVIEW家園家園-開發(fā)板商城上海7.2.1 編碼的風(fēng)格和版本的申明頭文件的結(jié)構(gòu) 定義文件的結(jié)構(gòu)頭文件的作用 目錄結(jié)構(gòu)命名規(guī)則注釋規(guī)則家園家園-開發(fā)板商城上海7.2.1.1和版本的申明和版本的要內(nèi)容有:位于頭文件和定義文件的開頭,主(1)信息。(2) 文件名稱,標(biāo)識符,摘要。(3) 當(dāng)前版本號,作者/修改者,完成日期。(4) 版本歷史信息。范例/*/*CCooppyyrirgighht t(c(c) )220011,上,上海海貝貝爾爾網(wǎng)網(wǎng)絡(luò)絡(luò)應(yīng)應(yīng)用用事事業(yè)業(yè)部部*.*s*文文件

3、件名名稱稱:filenammee.h.h*文文件件標(biāo)標(biāo)識識:見見配配置置管管理理計計劃劃書書*摘摘 要要:簡簡要要描描述述本本文文件件的的內(nèi)內(nèi)容容*當(dāng)當(dāng)前前版版本本:11.1.1*作作 者者:輸輸入入作作者者(或或修修改改者者)名名字字*完完成成日日期期:220011年年77月月2200日日*取取代代版版本本:11.0.0*原原作入家入原原園作作* 完成成日日期期:20011年年55月10日家園-開發(fā)板商城 上海7.2.1.2頭文件的結(jié)構(gòu)頭文件由三部分內(nèi)容組成:頭文件開頭處的預(yù)處理塊。 函數(shù)和類結(jié)構(gòu)范例和版本。等。,應(yīng)當(dāng)用ifndef/define/endif結(jié)構(gòu)產(chǎn)生預(yù)處為了防止頭文件被重復(fù)理

4、塊。用 #include <filename.h> 格式來標(biāo)準(zhǔn)庫目錄開始搜索)。用 #include “filename.h” 格式來將從用戶的工作目錄開始搜索)。標(biāo)準(zhǔn)庫的頭文件(編譯器將從非標(biāo)準(zhǔn)庫的頭文件(編譯器頭文件中只存放“”而不存放“定義”不提倡使用全局變量,盡量不要在頭文件中出現(xiàn)象extern int value這類。家園家園-開發(fā)板商城上海7.2.1.3定義文件的結(jié)構(gòu)定義文件有三部分內(nèi)容:定義文件開頭處的對一些頭文件的和版本程序的實現(xiàn)體(包括數(shù)據(jù)和代碼)范例/和版本#include “graphics.h”/ 全局函數(shù)的實現(xiàn)體void function1()/頭文件家園

5、家園-開發(fā)板商城上海7.2.1.4 頭文件的作用通過頭文件來調(diào)用庫功能頭文件能加強類型安全檢查家園家園-開發(fā)板商城上海7.2.1.5 目錄結(jié)構(gòu)特點:便于維護(hù)通常應(yīng)將頭文件和定義文件分別保存于不同的目錄加強信息隱藏:如果某些頭文件是私有的,它被用戶的程序直接,則沒有必要公開其“”范例:Network 工程建立三個目錄source:存放工程源文件,如:server.c client.c Include:存放工程頭文件,如:server.h client.hLib:存放工程庫文件,如:tipr.lib stdio.lib家園家園-開發(fā)板商城上海7.2.1.6 命名規(guī)則匈牙利命名規(guī)則主要思想:在變量和

6、函數(shù)名中加入前綴以增進(jìn)人們對程序的理解具體規(guī)則:標(biāo)識符應(yīng)當(dāng)直觀且可以拼讀,可望文知意,不必進(jìn)行“”。標(biāo)識符的長度應(yīng)當(dāng)符合“min-length && max-information”原則命名規(guī)則盡量與所采用的操作系統(tǒng)或開發(fā)工具的風(fēng)格保持一致程序中不要出現(xiàn)僅靠大小寫區(qū)分的相似的標(biāo)識符程序中不要出現(xiàn)標(biāo)識符完全相同的局部變量和全局變量變量的名字應(yīng)當(dāng)使用“名詞”或者“形容詞名詞”用正確的反義詞組命名具有互斥意義的變量或相作的函數(shù)等家園家園-開發(fā)板商城上海7.2.2 程序的版式空行代碼行代碼行內(nèi)的空格代碼對齊長行拆分修飾符的位置注釋家園家園-開發(fā)板商城上海7.2.2.1 空行空行起著分隔

7、程序段落的作用。空行得體(不過多也不過少)將使程序的布局更加清晰??招欣速M內(nèi)存空行規(guī)則每個函數(shù)定義結(jié)束之后都要加空行在一個函數(shù)體內(nèi),邏揖上密切相關(guān)的語句之間不加空行,其它地方應(yīng)加空行分隔。家園家園-開發(fā)板商城上海7.2.2.2 代碼行規(guī)則一行代碼只做一件事情如只定義一個變量,或只寫一條語句。這樣的代碼容易閱讀,并且方便于寫注釋。if、for、while、do等語句自占一行,執(zhí)行語句不得緊跟其后。不論執(zhí)行語句有多少都要加。盡可能在定義變量的同時初始化該變量(就近原則)家園家園-開發(fā)板商城上海7.2.2.3 代碼行內(nèi)的空格關(guān)鍵字之后要留空格函數(shù)名之后不要留空格,緊跟左括號(,以與關(guān)鍵字區(qū)別(向后緊

8、跟,)、,、;向前緊跟,緊跟處不留空格,之后要留空格二元操作符的前后應(yīng)當(dāng)加空格。一元操作符前后不加空格。象“”、“.”、“->”這類操作符前后不加空格。家園家園-開發(fā)板商城上海7.2.2.4 對齊和拆分規(guī)則對齊規(guī)則程序的分界符和應(yīng)獨占一行并且位于同一列,同時與們的語句左對齊 之內(nèi)的代碼塊在右邊數(shù)格處左對齊。它長行拆分規(guī)則代碼行最大長度宜在70至80個字符以內(nèi)長表達(dá)式要在低優(yōu)先級操作符處拆分成新行,操作符放在新行之首(以便突出操作符)。拆分出的新行要進(jìn)行適當(dāng)?shù)目s進(jìn),使排版整齊,語句可讀家園家園-開發(fā)板商城上海7.2.2.5 長行拆分規(guī)則在70至80個字符以內(nèi)代碼行最大長度宜長表達(dá)式要在低優(yōu)

9、先級操作符處拆分成新行,操作符放在新行之首(以便突出操作符)例:if (very_longer_variable1 >= very_longer_variable12)&& (very_longer_variable3 <= very_longer_variable14) && (very_longer_variable5 <= very_longer_variable16)dosomething();家園家園-開發(fā)板商城上海7.2.2.6 修飾符的位置修飾符 * 和 修飾符 緊靠變量名例如:char *name;x?y?int*x, y;/

10、此處y被誤解為指針家園家園-開發(fā)板商城上海7.2.2.7 注釋C語言的注釋符為“/*/”行注釋一般采用“/”注釋通常用于版本、;函數(shù)接口說明;重要的代碼行或段落提示。家園家園-開發(fā)板商城上海7.2.2.7 注釋注釋規(guī)則注釋是對代碼的“提示”,而不是文檔如果代碼本來就是清楚的,則不必加注釋。邊寫代碼邊注釋注釋應(yīng)當(dāng)準(zhǔn)確、易懂,防止注釋有二義性盡量避免在注釋中使用縮寫,特別是不常用縮寫。注釋的位置應(yīng)與被描述的代碼相鄰當(dāng)代碼比應(yīng)當(dāng)在家園釋家園-開發(fā)板商城上海7.2.2.7 注釋注釋實例/* 函數(shù)介紹:* 輸入?yún)?shù):* 輸出參數(shù):* 返回值 :*/void Function(float x, float

11、 y, float z)家園家園-開發(fā)板商城上海階段小節(jié)Ô的申明和頭文件的結(jié)構(gòu)及作用Ô 命名的規(guī)則Ô 代碼的版式規(guī)則ÔÔÔ空行對齊拆分Ô 代碼的注釋家園家園-開發(fā)板商城上海7.3 微觀上的高質(zhì)量程序的健壯性防止內(nèi)存泄漏編程的優(yōu)化家園家園-開發(fā)板商城上海7.3.1程序的健壯性使用斷言復(fù)合表達(dá)式If語句使用const提高函數(shù)的健壯性家園家園-開發(fā)板商城上海7.3.1.1使用斷言程序一般分為Debug版本和Release版本斷言assert是僅在Debug版本起作用的宏斷言優(yōu)勢:跟蹤程序運行,幫助調(diào)試輸出錯誤可以自定義家園家園-開

12、發(fā)板商城上海7.3.1.1使用斷言使用斷言規(guī)則:使用斷言捕捉原本不應(yīng)該發(fā)生的情況在函數(shù)的處,使用斷言檢查參數(shù)的有效性()。一旦確定了的假定,就要使用斷言對假定進(jìn)行檢查。如果“不可能發(fā)生”的事情的確發(fā)生了,則要使用斷言進(jìn)行家園家園-開發(fā)板商城上海7.3.1.2 復(fù)合表達(dá)式復(fù)合表達(dá)式例子a = b = c = 0優(yōu)勢:書寫簡潔提高編譯效率家園家園-開發(fā)板商城上海7.3.1.2 復(fù)合表達(dá)式復(fù)合表達(dá)式使用規(guī)則不要編寫太復(fù)雜的復(fù)合表達(dá)式。例子:i = a >= b && c < d && c + f <= g + h ;不要有多用途的復(fù)合表達(dá)式d = (

13、a = b + c) + r ;不要把程序中的復(fù)合表達(dá)式與“真正的數(shù)學(xué)表達(dá)式”if (a < b < c) 與 if (a<b) && (b<c)家園家園-開發(fā)板商城上海7.3.1.3 if語句布爾變量與零值比較不可將布爾變量直接與TRUE、FALSE或者1、0進(jìn)行比較。例子:假設(shè)布爾變量名字為flag,它與零值比較的標(biāo)準(zhǔn)if語句如下:if (flag) if (!flag)/ 表示flag為真/ 表示flag為假其它的用法都屬于不良風(fēng)格,例如:if (flag = TRUE)if (flag = 1 )if (flag = FALSE) if (fla

14、g = 0)家園家園-開發(fā)板商城上海7.3.1.3 if語句整型變量與零值比較整型變量用“=”或“!=”直接與0比較例子:假設(shè)整型變量的名字為value,它與零值比較的標(biāo)準(zhǔn)if語句如下:if (value = 0) if (value != 0)不可模仿布爾變量的風(fēng)格而寫成if (value) if (!value)/ 會讓人誤解value是布爾變量家園家園-開發(fā)板商城上海7.3.1.3 if語句浮點變量與零值比較不可將浮點變量用“=”或“!=”與任何數(shù)字比較設(shè)法轉(zhuǎn)化成“>=”或“<=”形式例子:假設(shè)浮點變量的名字為x,應(yīng)當(dāng)將if (x = 0.0)轉(zhuǎn)化為/ 隱含錯誤的比較if(x

15、>=.EPSINON) &&其中EPSINON是(x<=EPSINON)的誤差(即精度)。家園家園-開發(fā)板商城上海7.3.1.3 If語句指針變量與零值比較指針變量用“=”或“!=”與NULL比較例子:與零值比較的標(biāo)準(zhǔn)if語句如下:if (p = NULL)/ p與NULL顯式比較,強調(diào)p是指針變量if (p != NULL)不要寫成if (p = 0) / 容易讓人誤解p是整型變量if (p != 0)或者if (p) if (!p)/ 容易讓人誤解p是布爾變量家園家園-開發(fā)板商城上海7.3.1.4 使用const提高函數(shù)的健壯性const 用法:定義常量修飾函數(shù)

16、的參數(shù)修飾函數(shù)的返回值家園家園-開發(fā)板商城上海7.3.1.4.1 用const定義常量const類型定義:指明變量或?qū)ο蟮闹凳遣荒鼙桓拢肽康氖菫榱巳〈A(yù)編譯指令??梢员Wo(hù)被修飾的東西,防止意外的修改,增強程序的健壯性。編譯器通常不為普通const常量分配空間,而是將它們保存在符號表中,這使得它成為一個編譯期間的常量,沒有了與讀內(nèi)存的操作,使得它的效率也很高。可以節(jié)省空間,避免不必要的內(nèi)存分配。家園家園-開發(fā)板商城上海7.3.1.4.2 用const修飾函數(shù)的參數(shù)const只能修飾輸入?yún)?shù)特點如果輸入?yún)?shù)采用“指針傳遞”,那么加const修飾可以防止意外地改動該指針,起到保護(hù)作用例:voi

17、d StringCopy(char *strDestination, const char *strSource);如果輸入?yún)?shù)采用“void func(const A &a)傳遞 ”, 可以避免修改參數(shù)值的值傳遞家園家園-開發(fā)板商城上海7.3.1.4.3 用const修飾函數(shù)的返回值如果給以“指針傳遞”方式的函數(shù)返回值加const修飾, 那么函數(shù)返回值(即指針)內(nèi)容不能被修改例如函數(shù)const char * GetString(void); 如下語句將出現(xiàn)編譯錯誤:char *str = GetString(); 正確的用法是const char *str = GetString()

18、;如果函數(shù)返回值采用“值傳遞方式”,由于函數(shù)會把返回單元中,加const修飾沒有任值到外部臨時的何價值家園家園-開發(fā)板商城上海7.3.2 防止內(nèi)存泄漏內(nèi)存分配方式malloc/free 的使用要點常見的內(nèi)存錯誤及其對策與指針的比較指針與數(shù)組的對比指針參數(shù)是如何傳遞內(nèi)存的動態(tài)內(nèi)存自動杜絕“野指針”家園家園-開發(fā)板商城上海7.3.2.1內(nèi)存分配方式內(nèi)存分配方式有三種:從靜態(tài)區(qū)域分配在棧上創(chuàng)建從堆上分配,亦稱動態(tài)內(nèi)存分配malloc或new free或delete家園家園-開發(fā)板商城上海7.3.2.2 malloc/free 的使用要點malloc語法:void * malloc(size_t si

19、ze);作用:申請一塊長度為length的整數(shù)類型的內(nèi)存例子:int *p = (int *) malloc(sizeof(int) * length)free語法:void free( void * memblock )作用:內(nèi)存例子:free(p)如果p是NULL指針,那么free對p無論操作多少次都出問題如果p不是NULL指針,那么free對p連續(xù)操作兩次就會導(dǎo)致程序運行錯誤。家園家園-開發(fā)板商城上海7.3.2.3 常見的內(nèi)存錯誤及其對策常見的內(nèi)存錯誤 :內(nèi)存分配未,卻使用了它內(nèi)存分配雖然,但是尚未初始化就它內(nèi)存分配并且已經(jīng)初始化,但操作越過了內(nèi)存的邊界忘記了內(nèi)存,造成內(nèi)存泄漏了內(nèi)存卻繼

20、續(xù)使用它家園家園-開發(fā)板商城上海7.3.2.3 常見的內(nèi)存錯誤及其對策內(nèi)存管理的規(guī)則用malloc之后,應(yīng)該立即檢查指針值是否為NULL。防止使用指針值為NULL的內(nèi)存。不要忘記為數(shù)組和動態(tài)內(nèi)存賦初值。防止將未被初始化的內(nèi)存作為右值使用。避免數(shù)組或指針的下標(biāo)越界,特別要當(dāng)心發(fā)生“多1”或者“少1”操作。動態(tài)內(nèi)存的申請與必須配對,防止內(nèi)存泄漏。用free了內(nèi)存之后,立即將指針設(shè)置為NULL,防止產(chǎn)生“野指針”。家園家園-開發(fā)板商城上海7.3.2.4與指針的比較表示符差別 &指針 *的規(guī)則:被創(chuàng)建的同時必須被初始化(指針則可以在任何時候被初始化)。不能有NULL NULL)。,必須與合法的

21、單元關(guān)聯(lián)(指針則可以是一旦被初始化,就不能改變的關(guān)系(指針則可以隨時改變所指的對象)。家園家園-開發(fā)板商城上海7.3.2.4與指針的比較函數(shù)的參數(shù)和返回值的傳遞方式值傳遞例:void func1(int x)x = x + 10;輸出結(jié)果:xn=100int n = 0; func1(n);=家園家園-開發(fā)板商城上海printf( “n1= %dn”,n);printf( “x= %dn”,x);7.3.2.4與指針的比較函數(shù)的參數(shù)和返回值的傳遞方式指針傳遞例:void func2(int *x)(* x) = (* x) + 10;輸出結(jié)果:xn=1010int n = 0; func2(&

22、amp;n);printf( “n = %dn”,n);家園家園-開發(fā)板商城上海printf( “x= %dn”,x);7.3.2.4與指針的比較函數(shù)的參數(shù)和返回值的傳遞方式傳遞void func3(int &x)x = x + 10;輸出結(jié)果:xn=1010int n = 0; func3(n);printf( “n1 = %dn”,n);家園家園-開發(fā)板商城上海printf( “x= %dn”,x);7.3.2.5 指針與數(shù)組的對比差別數(shù)組:要么在靜態(tài)區(qū)被創(chuàng)建(如全局?jǐn)?shù)組),要么在棧上被創(chuàng)建數(shù)組名對應(yīng)著(而不是指向)一塊內(nèi)存其地址與容量在生命期內(nèi)保持不變只有數(shù)組的內(nèi)容可以改變指針:

23、隨時指向任意類型的內(nèi)存塊通用使用指針操作動態(tài)內(nèi)存家園家園-開發(fā)板商城上海7.3.2.5 指針與數(shù)組的對比差別內(nèi)存的容量大小例:1char a = "hello world" char *p = a;sizeof(a) ?/ sizeof(a)= 12字節(jié)sizeof(p) ?/ sizeof(a)= 4字節(jié)例2void func(char a100)sizeof(a) ?/ sizeof(a)=sizeof(char *)/4字節(jié)而不是100字節(jié)注家組園作時,數(shù)組自動為家園-開發(fā)板商城 上海7.3.2.5 指針與數(shù)組的對比分析下面代碼:char *p = (char *)

24、malloc(100);strcpy(p, “hello”); free(p);if( p != NULL)strcpy(p, “world”);free函數(shù)只是把指針?biāo)傅膬?nèi)存給,但并沒有把指針本身干掉。掉p為家園家園-開發(fā)板商城上海7.3.2.5 指針與數(shù)組的對比動態(tài)內(nèi)存例:自動指針應(yīng)該注意的特性指針消亡了,并不表示它所指的內(nèi)存會被自動。了,并不表示指針會消亡或者成了NULL指針。內(nèi)存被家園家園-開發(fā)板商城上海void Func(void)char *p = (char *) malloc(100);/ 動態(tài)內(nèi)存會自動嗎?7.3.2.6 指針參數(shù)是如何傳遞內(nèi)存的*如果函數(shù)的參數(shù)是一個指針,

25、不要指望用該指針去申請動態(tài)內(nèi)存void GetMemory(char *p, int num)void Test(void)char *str = NULL;strcpy(str, "hello");/ 運行錯誤家園家園-開發(fā)板商城上海GetMemory(str, 100);/ str 仍然為NULLp = (char *)malloc(sizeof(char) * num);7.3.2.6 指針參數(shù)是如何傳遞內(nèi)存的*如果函數(shù)的參數(shù)是一個指針,不要指望用該指針去申請動態(tài)內(nèi)存void GetMemory(char *p, int num)void Test(void)char

26、 *str = NULL;strcpy(str, "hello");家園家園-開發(fā)板商城上海GetMemory(&str, 100);*p = (char *)malloc(sizeof(char) * num);7.3.2.6 指針參數(shù)是如何傳遞內(nèi)存的*用return語句返回指向“堆內(nèi)存”的指針char *GetMemory( int num)return p;void Test(void)str = GetMemory(100); strcpy(str, "hello"); printf(“%sn”, str); free(str);家園家園

27、-開發(fā)板商城上海char *str = NULL;char *p = (char *)malloc(sizeof(char) * num);7.3.2.6 指針參數(shù)是如何傳遞內(nèi)存的* 不要用return語句返回指向“棧內(nèi)存”的指針char *GetString(void)char p = "hello world"void Test4(void)char *str = NULL;printf(“%sn”,str );家園家園-開發(fā)板商城上海str = GetString();/ str 的內(nèi)容是return p; / 編譯器將提出警告7.3.2.6 指針參數(shù)是如何傳遞內(nèi)存的

28、* 不要用return語句返回指向“棧內(nèi)存”的指針char *GetString(void)char *p = "hello world"return p; / 編譯器將提出警告void Test4(void)char *str = NULL; str = GetString(); printf(“%sn”,str );家園家園-開發(fā)板商城上海7.3.2.7動態(tài)內(nèi)存自動free函數(shù)特點指針?biāo)傅膬?nèi)存沒有銷毀指針,故指針地址仍然不變(非NULL)例:char *p = (char *) malloc(100); strcpy(p, “hello”);沒有起到防錯作用free(

29、p);/ p 所指的內(nèi)存被,但是p所指的地址仍然不變if(p != NULL)strcpy(p, “world”);/ 出錯家園家園-開發(fā)板商城上海7.3.2.8 杜絕“野指針”什么是“野指針”不是NULL指針是指向“”內(nèi)存的指針if(p!=NULL)不能起到作用野指針的成因指針變量沒有被初始化指針初始化:char *p = NULL;char *str = (char *) malloc(100);指針p被free或者delete之后,并沒有置為NULL家園家園-開發(fā)板商城上海7.3.3 編程的優(yōu)化引入常量const與#define的比較常量定義規(guī)則循環(huán)語句的效率for語句的循環(huán)變量家園家園

30、-開發(fā)板商城上海7.3.3.1 為什么用常量常量是一種標(biāo)識符,它的值在運行期間恒定不變。用 #define來定義常量(稱為宏常量),還可以用const來定義常量為什么要常量增加程序的可讀性在程序的很多地方輸入同樣的數(shù)字或字符串,難保不發(fā)生書寫錯誤。 如果要修改數(shù)字或字符串,則會在很多地方改動,既麻煩又容易出錯。盡量使用含義直觀的常量來表示那些將在程序中多次出現(xiàn)的數(shù)字或字符串。例如:#defineconstintMAX100MAX = 100;/* C語言的宏常量 */ C+ 語言的const常量constfloatPI = 3.14159;/ C+ 語言的const常量家園家園-開發(fā)板商城上海

31、7.3.3.2 const 與 #define的比較兩種區(qū)別比較const常量有數(shù)據(jù)類型,而宏常量沒有數(shù)據(jù)類型。編譯器可以對前者進(jìn)行類型安全檢查。而對后者只進(jìn)行字符替換,沒有類型安全檢查有些集成化的調(diào)試工具可以對const常量進(jìn)行調(diào)試,但是不能對宏常量進(jìn)行調(diào)試。常量定義規(guī)則需要對外公開的常量放在頭文件中,不需要對外公開的常量放在定義文件的頭部為便于管理,可以把不同模塊的常量集中存放在一個公共的頭文件中。如果某一常量與其它常量密切相關(guān),應(yīng)在定義中包含這種關(guān)系,而不應(yīng)給出一些孤立的值。例如:const floatRADIUS = 100;const floatDIAMETER = RADIUS *

32、 2;家園家園-開發(fā)板商城上海7.3.3.4循環(huán)語句的效率在多重循環(huán)中,如果有可能,應(yīng)當(dāng)將最長的循環(huán)放在最內(nèi)層,最短的循環(huán)放在最外層,以減少CPU跨切循環(huán)層的次數(shù)。for (row=0; row<100; row+)for ( col=0; col<5; col+ )sum = sum + arowcol;如果循環(huán)體內(nèi)存在邏輯的外面。,并且循環(huán)次數(shù)很大,宜將邏輯移到循環(huán)體if (condition)for (i=0; i<N; i+)elseDoSomething();家園foN; i+)家園-開發(fā)板商城上海7.3.3.5 for語句的循環(huán)變量循環(huán)變量規(guī)則不可在for 循環(huán)體內(nèi)修改循環(huán)變量,防止for 循環(huán)失去建議for語句的循環(huán)例子:變量的取值采用“半開半閉區(qū)間”寫法閉區(qū)間半開半閉區(qū)間家園家園-開發(fā)板商城上海for (int x=0; x&l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論