下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、編程規(guī)范,1、程序員花更多的時(shí)間在調(diào)試、維護(hù)和升級已有代碼上,而不是編寫新的代碼; 2、程序最重要的是正確性,其次是可維護(hù)性,最后才是效率; 3、學(xué)習(xí)如何寫優(yōu)美的程序與學(xué)習(xí)如何正確地編寫代碼同樣重要; 4、讓程序盡量簡單易懂,即使違背了某些規(guī)則也無關(guān)緊要; 5、一個(gè)運(yùn)行正常但沒有注釋的程序如同一個(gè)等待爆炸的定時(shí)炸彈,因?yàn)樵缤頃腥诵薷幕蛏夁@個(gè)程序; 6、好風(fēng)格應(yīng)該成為一種習(xí)慣。如果你在開始寫代碼時(shí)就關(guān)心風(fēng)格問題,如果你花時(shí)間去審視和改進(jìn)它,你將會逐漸養(yǎng)成一種好的編程習(xí)慣。一旦這種習(xí)慣變成自動的東西,你的潛意識就會幫你照料許多細(xì)節(jié)問題,甚至你在工作壓力下寫出的代碼也會更好。,關(guān)于編程規(guī)范的幾個(gè)
2、原則,float b, c10; void abc(void) float zongfen = 0; int d; for( d = 0; d 0) zongfen += cb; b = zongfen /10; 這段程序在做什么? 這段程序是否有錯誤? 這程序中存在哪些不良的書寫風(fēng)格?它們可能會引起什么后果?,程序?qū)嵗?float b, c10; void abc(void) float zongfen = 0; int d; for( d = 0; d 0) zongfen += cb; b = zongfen /10;,有了哪些改進(jìn)? 你認(rèn)為還有什么地方需要改進(jìn)?,一、標(biāo)識符,標(biāo)識符的命
3、名要清晰、明了,有明確含義。使用完整的單詞或大家基本可以理解的縮寫,避免使人產(chǎn)生誤解。 標(biāo)識符應(yīng)當(dāng)采用英文單詞或其組合,切忌使用漢語拼音來命名。 壞的命名: int a / Age1 / XueshengAge; 好的命名: int StudentAge; 1.1 變量名 1.1.1 不同作用域變量的命名 局部變量以小寫字母命名; 全局變量以首字母大寫方式命名(駱駝式); 定義類型和宏定義常數(shù)以大寫字母命名; 變量的作用域越大,它的名字所帶有的信息就應(yīng)該越多。 局部變量: int student_age; 全局變量: int StudentAge; 宏定義常數(shù):#define STUDENT_
4、NUM 10 類型定義: typedef INT16S int;,1.1.2 不同類型變量的命名(匈牙利命名法) 匈牙利命名法是一種命名約定。匈牙利命名法把變量的類型 (或者它的預(yù)期使用)等信息編碼在變量名中。 一些常用的匈牙利命名法前綴 數(shù)據(jù)類型 前綴 例子 char c cInChar unsigned char uc ucOutChar int i iReturnValue unsigned int ui uiControlWord long l lNumRecs float f fLength double d dArea,一、標(biāo)識符,1.1.3 指針變量的命名 對于指針的定義,名稱大
5、小寫根據(jù)指針為全局/局部變量來定,但指針名必須以小寫的“p”開頭。 如: int *pDay; /全局指針 int *pday; /局部指針 int *ppDay; /指針的指針 1.1.4 在某一模塊中使用的變量,變量名的開始需有模塊名。 如: 模塊 KEY.C 中的變量: int iKeyNum; int iKeyNumBuff10;,一、標(biāo)識符,一、標(biāo)識符,1.2 函數(shù)名 函數(shù)名的命名應(yīng)象全局變量一樣采用首字母大寫方式(駱駝式)。 函數(shù)名的開始應(yīng)以“ 模塊名_ ”的格式注明函數(shù)所屬模塊。 例如: (1)KEY.C模塊的函數(shù) void KEY_Init(void); void KEY_St
6、artScan(void); void KEY_StopScan(void); (2)TMR.C模塊的函數(shù) void TMR_Init(void); void TMR_Start(TMR_ID tmr); void TMR_Stop(TMR_ID tmr);,二、排版,名字的合理選擇可以幫助理解程序。同樣,也應(yīng)該以盡可能一目了然的形式書寫語句。這就像保持書桌整潔可以使你容易找到東西一樣。 2.1 用縮進(jìn)格式書寫代碼 函數(shù)或過程的開始、結(jié)構(gòu)定義及循環(huán)、判斷等語句中的代碼都要采用縮進(jìn); 縮進(jìn)的空格數(shù)為4個(gè); 使用空格鍵,不使用TAB鍵; 程序塊的分界符(和)應(yīng)各獨(dú)占一行。 例: for(i = 0
7、; i 0) /遇到負(fù)分,記為0分 total_score += fScorei; ,二、排版,2.2 其他書寫格式 2.2.1 長語句 較長的語句(多于80字符)要分成多行書寫; 長表達(dá)式要在低優(yōu)先級操作符處劃分新行,操作符放在新行之首; 劃分出的新行要進(jìn)行適當(dāng)?shù)目s進(jìn),使排版整齊,語句可讀; 不允許把多個(gè)短語句寫在一行中,即一行只寫一條語句。 例: 修改前: MeasData.TransTdir=TransTdir*SetData.Filter+TransTdir*(1-SetData.Filter); 修改后: MeasData.TransTdir = TransTdir * SetDat
8、a.Filter + TransTdir * (1 - SetData.Filter);,二、排版,2.2.2 空行和空格的使用 相對獨(dú)立的程序塊之間、變量定義之后語句開始以前必須加空行 ; 逗號、分號只在后面加空格 ; 比較操作符、賦值操作符、算術(shù)操作符、邏輯操作符、位域操作符等雙目操作符的前后加空格; “!”、“”、“+”、“-”、“ / 不良的風(fēng)格,三、表達(dá)式和基本語句,3.1 運(yùn)算表達(dá)式 不要編寫太復(fù)雜的復(fù)合表達(dá)式; 例如: i = a = b 如果代碼行中的運(yùn)算符比較多,用括號確定表達(dá)式的操作順序,避免 使用默認(rèn)的優(yōu)先級。 例如: if(a | b 這樣做并非多此一舉,而是為了防止別
9、人誤以為你忘了default 處理。 switch 語句的標(biāo)準(zhǔn)格式是: switch (variable) case value1 : break; case value2 : break; default : break; ,四、常量,這是一個(gè)根據(jù)LCD的列來計(jì)算像素X坐標(biāo)的函數(shù): INT16U LCD_GetStX(INT8U col) INT16U x; if(col 29) col = 29; #if LCD_MODE = _VGA x = 150 + (INT16U)col * 8; #elif x = (INT16U)col * 8; #endif return(x); 代碼中的數(shù)
10、(29,8,150)都是什么意義? 這些神秘的數(shù)給程序的閱讀和維護(hù)增加了很大的難度。,#define LCD_MAX_COL 29 /LCD最大列數(shù) #define LCD_START_X 150 /LCD起始X坐標(biāo) #define LCD_COL_WIDTH 8 /LCD列寬 INT16U LCD_GetStX(INT8U col) INT16U x; if(col LCD_MAX_COL ) col = LCD_MAX_COL ; #if LCD_MODE = _VGA x = LCD_START_X + (INT16U)col * LCD_COL_WIDTH ; #elif x = (I
11、NT16U)col * LCD_COL_WIDTH ; #endif return(x); ,四、常量,四、常量,4.1 為什么要用常量 如果不使用常量,直接在程序中填寫數(shù)字或字符串,將會有什么麻煩? (1) 程序的可讀性(可理解性)變差。程序員自己會忘記那些數(shù)字或字符串是什么意思,用戶則更加不知它們從何處來、表示什么。 (2) 在程序的很多地方輸入同樣的數(shù)字或字符串,難保不發(fā)生書寫錯誤。 (3) 如果要修改數(shù)字或字符串,則會在很多地方改動,既麻煩又容易出錯。 4.2 定義常量的方法 (1)#define 宏定義 (2)const 常量 (3)enum 枚舉,4.3 #define 宏定義 使
12、用最廣泛,如: #define MAX_TEACHER 100 缺點(diǎn):宏定義的常量沒有類型,只進(jìn)行字符替換,沒有類型安全檢查,并且在字符替換可能會產(chǎn)生意料不到的錯誤。 4.4 const 常量 如: const int MAX_STUDENT = 100; 優(yōu)點(diǎn):const 常量有數(shù)據(jù)類型,而宏常量沒有數(shù)據(jù)類型。編譯器可以對前者進(jìn)行類型安全檢查。 缺點(diǎn): const 常量無法在數(shù)組定義時(shí)作為數(shù)組長度。如: float StudentHeightMAX_STUDENT; /錯誤,四、常量,4.5 枚舉 enumRED, BLUE, GREEN, YELLOW, WHITE, BLACK, COL
13、OR_NUM; 優(yōu)點(diǎn): (1) 適合一次定義批量常數(shù),尤其是在數(shù)值連續(xù)時(shí)尤為方便; (2) 枚舉常量可以作為數(shù)組長度,如: float BallSizeCOLOR_NUM; 缺點(diǎn):不能定義除整型外的其他類型常量,如float和double。,四、常量,一個(gè)運(yùn)行正常但沒有注釋的程序如同一個(gè)等待爆炸的定時(shí)炸彈;而在有注釋,但注釋不正確時(shí),炸彈的當(dāng)量更大。 注釋應(yīng)當(dāng)準(zhǔn)確、易懂,防止注釋有二義性。錯誤的注釋不但無益反而有害。 5.1 注釋的基本概念 C 語言的注釋符為“/*/”。C+語言中,程序塊的注釋常采用“/*/”,行注釋一般采用“/”。注釋通常用于: (1)版本、版權(quán)聲明; (2)函數(shù)接口說明;
14、 (3)重要的代碼行或段落提示。 雖然注釋有助于理解代碼,但注意不可過多地使用注釋。,五、注釋,五、注釋,5.2 注釋的準(zhǔn)確性 邊寫代碼邊注釋,修改代碼同時(shí)修改相應(yīng)的注釋,以保證注釋與代碼的一致性。不再有用的注釋要刪除。 注釋應(yīng)當(dāng)準(zhǔn)確、易懂,防止注釋有二義性。錯誤的注釋不但無益反而有害。 盡量避免在注釋中使用縮寫,特別是不常用縮寫。 注釋的位置應(yīng)與被描述的代碼相鄰,可以放在代碼的上方或右方,不可放在下方。 5.3 變量、常量的注釋 對于所有有物理含義的變量、常量,在定義和聲明時(shí)都必須加以注釋,說明其物理含義。變量、常量、宏的注釋應(yīng)放在其上方相鄰位置或右方。 數(shù)據(jù)結(jié)構(gòu)定義和聲明(包括數(shù)組、結(jié)構(gòu)、
15、類、枚舉等),必須加以注釋。對數(shù)據(jù)結(jié)構(gòu)的注釋應(yīng)放在其上方相鄰位置,不可放在下面;對結(jié)構(gòu)中的每個(gè)成員的注釋放在此成員的右方;同一結(jié)構(gòu)中不同成員的注釋要對齊。 全局變量要有較詳細(xì)的注釋,包括對其功能、取值范圍、哪些函數(shù)或過程存取它以及存取時(shí)注意事項(xiàng)等的說明。,五、注釋,如: #define GUI_TXT_DISP_MOD 0 x0C /文本框內(nèi)文字顯示模式 #define GUI_TXT_RIGHT_DISP 0 x00 /文本框內(nèi)文字左對齊顯示 #define GUI_TXT_LEFT_DISP 0 x04 /文本框內(nèi)文字左對齊顯示 #define GUI_TXT_CENTRE_DISP 0
16、x08 /文本框內(nèi)文字居中顯示 typedef struct CTR_ASPECT Aspect; /外觀 INT8U *pTxt; /文字 INT8U TxtFont; /字體 INT8U Sta; /文本框狀態(tài)模式 INT8U WorkMod; /工作模式 TXT_BOX;,五、注釋,5.4 函數(shù)的注釋 /* * 可編輯文本框選項(xiàng)左移 * * * * 功能描述 : 按向左鍵時(shí),可編輯文本框的編輯位向左移一位。 * * 輸入?yún)?shù) : pbox 指向可編輯文本框的指針 * * 返回參數(shù) : 無 * * 作 者 : Liy-tj * */ void GUI_EditTxtBox_Left(EDIT_TXT_BOX *pbox) ,5.5 /* */ 和 / 文件頭、函數(shù)頭注釋使用“/* */”,函數(shù)內(nèi)部注釋“/” ,如:/* * GET HOW LONG KEY HAS BEEN PRESSED * * Description : Function return the time the key has been pressed. * * Arguments : none * * Returns : key down time in millisecond
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年深圳中考英語核心考點(diǎn)密押試卷(附答案可下載)
- 口試英語題目及答案
- 2026年大學(xué)大二(健康促進(jìn))社區(qū)健康促進(jìn)方案制定綜合測試題及答案
- 2026年深圳中考數(shù)學(xué)統(tǒng)計(jì)與概率專項(xiàng)試卷(附答案可下載)
- 2026年深圳中考生物綠色植物的光合作用試卷(附答案可下載)
- 色彩冷門考題題庫及答案
- 靜脈曲張術(shù)后早期護(hù)理
- 2026年深圳中考地理二模仿真模擬試卷(附答案可下載)
- 發(fā)展經(jīng)濟(jì)學(xué)經(jīng)濟(jì)發(fā)展的質(zhì)量和方式
- 2026年食品營養(yǎng)與健康中級水平筆試模擬題及答案
- 交通安全志愿者培訓(xùn)課件
- 化工防止靜電安全培訓(xùn)課件
- 【高三上】2026屆12月八省聯(lián)考(T8聯(lián)考)語文試題含答案
- 護(hù)理不良事件根本原因分析
- AI藥物研發(fā)中的倫理風(fēng)險(xiǎn)防控
- 社會心理學(xué)考試題及答案
- 醫(yī)療器械經(jīng)營企業(yè)質(zhì)量管理體系文件(2025版)(全套)
- 出鐵廠鐵溝澆注施工方案
- 2025年中小學(xué)教師正高級職稱評聘答辯試題(附答案)
- 現(xiàn)代企業(yè)管理體系架構(gòu)及運(yùn)作模式
- 2025年江蘇省泰州市保安員理論考試題庫及答案(完整)
評論
0/150
提交評論