![高質(zhì)量C++編程指南:程序代碼的版式_第1頁(yè)](http://file4.renrendoc.com/view/bf2aa6c93fead1fd93fcb4b917dae514/bf2aa6c93fead1fd93fcb4b917dae5141.gif)
![高質(zhì)量C++編程指南:程序代碼的版式_第2頁(yè)](http://file4.renrendoc.com/view/bf2aa6c93fead1fd93fcb4b917dae514/bf2aa6c93fead1fd93fcb4b917dae5142.gif)
![高質(zhì)量C++編程指南:程序代碼的版式_第3頁(yè)](http://file4.renrendoc.com/view/bf2aa6c93fead1fd93fcb4b917dae514/bf2aa6c93fead1fd93fcb4b917dae5143.gif)
![高質(zhì)量C++編程指南:程序代碼的版式_第4頁(yè)](http://file4.renrendoc.com/view/bf2aa6c93fead1fd93fcb4b917dae514/bf2aa6c93fead1fd93fcb4b917dae5144.gif)
![高質(zhì)量C++編程指南:程序代碼的版式_第5頁(yè)](http://file4.renrendoc.com/view/bf2aa6c93fead1fd93fcb4b917dae514/bf2aa6c93fead1fd93fcb4b917dae5145.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2.3程序代碼的版式
版式雖然不會(huì)影響程序的功能,但會(huì)影響可讀性。程序的版式追求清晰、美觀,是程序風(fēng)格的重要構(gòu)成因素。一、
空行空行起著分隔程序段落的作用??招械皿w將使程序的布局更加清晰??招胁粫?huì)浪費(fèi)內(nèi)存,雖然打印含有空行的程序是會(huì)多消耗一些紙張,但是值得。所以要舍得用空行?!疽?guī)則1】在每個(gè)類聲明之后、每個(gè)函數(shù)定義結(jié)束之后都要加空行。參見示例1(a)【規(guī)則2】在一個(gè)函數(shù)體內(nèi),邏揖上密切相關(guān)的語(yǔ)句之間不加空行,其它地方應(yīng)加空行分隔。參見示例1(b)二、
代碼行及行內(nèi)空格【規(guī)則1】一行代碼只做一件事情,如只定義一個(gè)變量,或只寫一條語(yǔ)句。這樣的代碼容易閱讀,并且方便于寫注釋?!疽?guī)則2】if、for、while、do等語(yǔ)句自占一行,執(zhí)行語(yǔ)句不得緊跟其后。不論執(zhí)行語(yǔ)句有多少都要加{
}。這樣可以防止書寫失誤。示例2(a)為風(fēng)格良好的代碼行,示例2(b)為風(fēng)格不良的代碼行。【建議1】盡可能在定義變量的同時(shí)初始化該變量(就近原則)如果變量的引用處和其定義處相隔比較遠(yuǎn),變量的初始化很容易被忘記。如果引用了未被初始化的變量,可能會(huì)導(dǎo)致程序錯(cuò)誤。本建議可以減少隱患?!疽?guī)則3】關(guān)鍵字之后要留空格。象const、virtual、inline、case等關(guān)鍵字之后至少要留一個(gè)空格,否則無(wú)法辨析關(guān)鍵字。象if、for、while等關(guān)鍵字之后應(yīng)留一個(gè)空格再跟左括號(hào)‘(’,以突出關(guān)鍵字?!疽?guī)則4】函數(shù)名之后不要留空格,緊跟左括號(hào)‘(’,以與關(guān)鍵字區(qū)別?!疽?guī)則5】‘(’向后緊跟,‘)’、‘,’、‘;’向前緊跟,緊跟處不留空格?!疽?guī)則6】‘,’之后要留空格,如Function(x,y,z)。如果‘;’不是一行的結(jié)束符號(hào),其后要留空格,如
for(initialization;condition;update)?!疽?guī)則7】賦值操作符、比較操作符、算術(shù)操作符、邏輯操作符、位域操作符,如“=”、“+=”“>=”、“<=”、“+”、“*”、“%”、“&&”、“||”、“<<”,“^”等二元操作符的前后應(yīng)當(dāng)加空格?!疽?guī)則8】一元操作符如“!”、“~”、“++”、“--”、“&”(地址運(yùn)算符)等前后不加空格?!疽?guī)則9】象“[]”、“.”、“->”這類操作符前后不加空格。【建議2】對(duì)于表達(dá)式比較長(zhǎng)的for語(yǔ)句和if語(yǔ)句,為了緊湊起見可以適當(dāng)?shù)厝サ粢恍┛崭瘢鏵or(i=0;i<10;i++)和if((a<=b)&&(c<=d))三、對(duì)齊與縮進(jìn)【規(guī)則1】程序的分界符‘{’和‘}’應(yīng)獨(dú)占一行并且位于同一列,同時(shí)與引用它們的語(yǔ)句左對(duì)齊?!疽?guī)則2】{
}之內(nèi)的代碼塊在‘{’右邊數(shù)格處左對(duì)齊。示例4(a)為風(fēng)格良好的對(duì)齊,示例4(b)為風(fēng)格不良的對(duì)齊。四、長(zhǎng)行拆分:【規(guī)則1】代碼行最大長(zhǎng)度宜控制在70至80個(gè)字符以內(nèi)。代碼行不要過(guò)長(zhǎng),否則眼睛看不過(guò)來(lái),也不便于打印?!疽?guī)則2】長(zhǎng)表達(dá)式要在低優(yōu)先級(jí)操作符處拆分成新行,操作符放在新行之首(以便突出操作符)。拆分出的新行要進(jìn)行適當(dāng)?shù)目s進(jìn),使排版整齊,語(yǔ)句可讀。五、修飾符的位置修飾符*和&應(yīng)該靠近數(shù)據(jù)類型還是靠近變量名,是個(gè)有爭(zhēng)議的話題。若將修飾符*靠近數(shù)據(jù)類型,例如:int*x;從語(yǔ)義上講此寫法比較直觀,即x是int
類型的指針。上述寫法的弊端是容易引起誤解,例如:int*x,y;此處y容易被誤解為指針變量。雖然將x和y分行定義可以避免誤解,但并不是人人都愿意這樣做?!窘ㄗh1】應(yīng)當(dāng)將修飾符*和&緊靠變量名或者用typedef做個(gè)類型映射。例如:char*name;int*x,y; //此處y不會(huì)被誤解為指針六、注釋的風(fēng)格
C語(yǔ)言的注釋符為“/*…*/”。C++語(yǔ)言中,程序塊的注釋常采用“/*…*/”,行注釋一般采用“//…”。注釋通常用于:(1)版本、版權(quán)聲明;(2)函數(shù)接口說(shuō)明;(3)重要的代碼行或段落提示。雖然注釋有助于理解代碼,但注意不可過(guò)多地使用注釋。
【規(guī)則1】注釋是對(duì)代碼的“提示”,而不是文檔。程序中的注釋不可喧賓奪主,注釋太多了會(huì)讓人眼花繚亂。注釋的花樣要少【規(guī)則2】如果代碼本來(lái)就是清楚的,則不必加注釋。否則多此一舉,令人厭煩。例如:i++; //i加1,多余的注釋【規(guī)則3】邊寫代碼邊注釋,修改代碼同時(shí)修改相應(yīng)的注釋,以保證注釋與代碼的一致性。不再有用的注釋要?jiǎng)h除?!疽?guī)則4】注釋應(yīng)當(dāng)準(zhǔn)確、易懂,防止注釋有二義性。錯(cuò)誤的注釋不但無(wú)益反而有害【規(guī)則5】盡量避免在注釋中使用縮寫,特別是不常用縮寫?!疽?guī)則6】注釋的位置應(yīng)與被描述的代碼相鄰,可以放在代碼的上方或右方,不可放在下方。【規(guī)則7】當(dāng)代碼比較長(zhǎng),特別是有多重嵌套時(shí),應(yīng)當(dāng)在一些段落的結(jié)束處加注釋,便于閱讀。七、類的版式類可以將數(shù)據(jù)和函數(shù)封裝在一起,其中函數(shù)表示了類的行為(或稱服務(wù))。類提供關(guān)鍵字public、protected和private,分別用于聲明哪些數(shù)據(jù)和函數(shù)是公有的、受保護(hù)的或者是私有的。這樣可以達(dá)到信息隱藏的目的,即讓類僅僅公開必須要讓外界知道的內(nèi)容,而隱藏其它一切內(nèi)容。我們不可以濫用類的封裝功能,不要把它當(dāng)成火鍋,什么東西都往里扔。類的版式主要有兩種方式:(1)將private類型的數(shù)據(jù)寫在前面,而將public類型的函數(shù)寫在后面,如示例6(a)。采用這種版式的程序員主張類的設(shè)計(jì)“以數(shù)據(jù)為中心”,重點(diǎn)關(guān)注類的內(nèi)部結(jié)構(gòu)。(2)將public類型的函數(shù)寫在前面,而將private類型的數(shù)據(jù)寫在后面,如示例6(b)采用這種版式的程序員主張類的設(shè)計(jì)“以行為為中心”,重點(diǎn)關(guān)注的是類應(yīng)該提供什么樣的接口(或服務(wù))。
很多C++教課書受到Biarne
Stroustrup第一本著作的影響,不知不覺地采用了“以數(shù)據(jù)為中心”的書寫方式,并不見得有多少道理。
建議讀者采用“以行為為中心”的書寫方式,即首先考慮類應(yīng)該提供什么樣的函數(shù)。這是很多人的經(jīng)驗(yàn)——“這樣做不僅讓自己在設(shè)計(jì)類時(shí)思路清晰,而且方便別人閱讀。因?yàn)橛脩糇铌P(guān)心的是接口,誰(shuí)愿意先看到一堆私有數(shù)據(jù)成員!
應(yīng)試實(shí)例:
美國(guó)某著名計(jì)算機(jī)嵌入公司面試:
下面程序有2中寫法,你青睞哪種?為什么?
A:寫法1:if(‘A’==a){
a++;
}
寫法2
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)庫(kù)巡檢報(bào)告
- 2025年汝州職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)試近5年常考版參考題庫(kù)含答案解析
- 2025年朔州陶瓷職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文2018-2024歷年參考題庫(kù)頻考點(diǎn)含答案解析
- 專項(xiàng)07 用轉(zhuǎn)化思想求不規(guī)則圖形的角度
- 專題01 先秦時(shí)期:中國(guó)境內(nèi)早期人類與文明的起源、早期國(guó)家與社會(huì)變革(練習(xí))
- 中班戶外主題活動(dòng)策劃方案五篇
- 幼兒園綜治宣傳月活動(dòng)策劃方案三篇
- 公司企業(yè)管理咨詢合同
- 擋土墻施工合同
- 車聯(lián)網(wǎng)技術(shù)推廣項(xiàng)目合同
- 2024年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招數(shù)學(xué)歷年參考題庫(kù)含答案解析
- 上海鐵路局招聘筆試沖刺題2025
- 國(guó)旗班指揮刀訓(xùn)練動(dòng)作要領(lǐng)
- 春季安全開學(xué)第一課
- 植物芳香油的提取 植物有效成分的提取教學(xué)課件
- 肖像繪畫市場(chǎng)發(fā)展現(xiàn)狀調(diào)查及供需格局分析預(yù)測(cè)報(bào)告
- 2021-2022學(xué)年遼寧省重點(diǎn)高中協(xié)作校高一上學(xué)期期末語(yǔ)文試題
- 同等學(xué)力英語(yǔ)申碩考試詞匯(第六版大綱)電子版
- 墓地個(gè)人協(xié)議合同模板
- 2024年部編版初中語(yǔ)文各年級(jí)教師用書七年級(jí)(上冊(cè))
- 中日合同范本
評(píng)論
0/150
提交評(píng)論