




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、C語言編程風格縮進格式Tab是8個字符,于是縮進也是8個字符.有很多怪異的風格,他們將縮進格式定義為4個字符(設置為2個字符!)的深度,這就象試圖將PI定義為3一樣讓人難以接受. 理由是:縮進的大小是為了清楚的定義一個塊的開始和結束.特別是當你已經在計算機前面呆了20多個小時了以后,你會發(fā)現(xiàn)一個大的縮進格式使得你對程序的理解更容易.現(xiàn)在,有一些人說,使用8個字符的縮進使得代碼離右邊很近,在80個字符寬度的終端屏幕上看程序很難受.回答是,但你的程序有3個以上的縮進的時候,你就應該修改你的程序.總之,8個字符的縮進使得程序易讀,還有一個附加的好處,就是它能在你將程序變得嵌套層數(shù)太多的時候給你警告.
2、這個時候,你應該修改你的程序.:大符號的位置另外一個C程序編程風格的問題是對大括號的處理.同縮進大小不同,幾乎沒有什么理由去選擇一種而不選擇另外一種風格,但有一種推薦的風格,它是Kernighan和Ritchie的經典的那本書帶來的,它將開始的大括號放在一行的最后,而將結束大括號放在一行的第一位,如下所示:if (x is true) we do y 然而,還有一種特殊的情況:命名函數(shù):開始的括號是放在下一行的第一位,如下:int function(int x) body of function 所有非正統(tǒng)的人會非難這種不一致性,但是,所有思維正常的人明白: (第一) K&R是_對_的,(第二
3、)如果K&R不對,請參見第一條. (:-).另外,函數(shù)也是特殊的,不一定非得一致.需要注意的是結束的括號在它所占的那一行是空的,_除了_它跟隨著同一條語句的繼續(xù)符號.如while在do-while循環(huán)中,或者else在if語句中.如下:do body of do-loop while (condition);以及if (x = y) . else if (x y) . else . 理由: K&R.另外,注意到這種大括號的放置方法減小了空行的數(shù)量,但卻沒有減少可讀性.于是,在屏幕大小受到限制的時候,你就可以有更多的空行來寫些注釋了.命名系統(tǒng)C是一種簡潔的語言,那么,命名也應該是簡潔的.同MOD
4、ULE-2以及ASCAL語言不同的是,C程序員不使用諸如ThisVariableIsATemporaryCounter之類的命名方式.一個C語言的程序員會將之命名為tmp,這很容易書寫,且并不是那么難以去理解.然而,當混合類型的名字不得不出現(xiàn)的時候,描述性名字對全局變量來說是必要的了.調用一個名為foo全局的函數(shù)是很讓人惱火的.全局變量(只有你必須使用的時候才使用它) ,就象全局函數(shù)一樣,需要描述性的命名方式.假如你有一個函數(shù)用來計算活動用戶的數(shù)量,你應該這樣命名-count_active_users()-或另外的相近的形式,你不應命名為cntusr().有一種稱為Hungarian命名方式,
5、它將函數(shù)的類型編碼寫入變量名中,這種方式是腦子有毛病的一種表現(xiàn)-編譯器知道這個類型而且會去檢查它,而這樣只會迷惑程序員. -知道為什么Micro$oft為什么會生產這么多臭蟲程序了把!.局部變量的命名應該短小精悍.假如你有一個隨機的整數(shù)循環(huán)計數(shù)器,它有可能有i,如果沒有任何可能使得它能被誤解的話,將其寫作loop_counter是效率低下的.同樣的,tmp可以是任何臨時數(shù)值的函數(shù)變量.如果你害怕混淆你的局部變量的名字,還有另外一個問題,就是稱function-growth-hormone-imbalancesyndrome.:函數(shù)函數(shù)應該短小而迷人,而且它只作一件事情.它應只覆蓋一到兩個屏幕(
6、80*24一屏),并且只作一件事情,而且將它做好.(這不就是UNIX的風格嗎,譯者注).一個函數(shù)的最大長度和函數(shù)的復雜程度以及縮進大小成反比.于是,如果你已經寫了簡單但長度較長的的函數(shù),而且你已經對不同的情況做了很多很小的事情,寫一個更長一點的函數(shù)也是無所謂的.然而,假如你要寫一個很復雜的函數(shù),而且你已經估計到假如一般人讀這個函數(shù),他可能都不知道這個函數(shù)在說些什么,這個時候,使用具有描述性名字的有幫助的函數(shù).另外一個需要考慮的是局部變量的數(shù)量.他們不應該超過5-10個,否則你有可能會出錯.重新考慮這個函數(shù),將他們分割成更小的函數(shù).人的大腦通??梢院苋菀椎挠涀?件不同的事情,超過這個數(shù)量會引起混
7、亂.你知道你很聰明,但是你可能仍想去明白2周以前的做的事情.注釋注釋是一件很好的事情,但是過多的注釋也是危險的,不要試圖區(qū)解釋你的代碼是注釋如何如何的好:你應該將代碼寫得更好,而不是花費大量的時間去解釋那些糟糕的代碼.通常情況下,你的注釋是說明你的代碼做些什么,而不是怎么做的.而且,要試圖避免將注釋插在一個函數(shù)體里:假如這個函數(shù)確實很復雜,你需要在其中有部分的注釋,你應該回到第四章看看.你可以寫些簡短的注釋來注明或警告那些你認為特別聰明(或極其丑陋)的部分,但是你必須要避免過多.取而代之的是,將注釋寫在函數(shù)前,告訴別人它做些什么事情,和可能為什么要這樣做.你已經深陷其中了.不要著急.你有可能已
8、經被告之GUN emacs會自動的幫你處理C的源代碼格式,而且你已經看到它確實如此,但是,缺省的情況下,它的作用還是不盡如人意(實際上,他們比隨便敲出來的東西還要難看- ainfinite number of monkeys typing into GNU emacs would never make a good program)于是,你可以要么不要使用GUN emacs,要么讓它使用sanervalules.使用后者,你需要將如下的語句輸入到你的.emacs文件中.(defun linux-c-mode() C mode with adjusted defaults for use wit
9、h the Linux kernel.(interactive) (c-mode) (c-set-styleK&R) (setq c-basic-offset8)這會定義一個M-x Linux-c-mode的命令.當你hacking一個模塊的時候,如何你將-*- linux-c -*-輸入在最開始的兩行,這個模式會自動起作用.而且,你也許想加入如下(setq auto-mode-alist (cons (/usr/src/linux.*/.*.ch$ . linux-c-mode) auto-mode-alist)到你的.emacs文件中,這樣的話,當你在/usr/src/linux下編輯文件
10、的時候,它會自動切換到linux-c-mode .但是,假如你還不能讓emaces去自動處理文件的格式,不要緊張,你還有一樣東西: 縮進 GNU的縮進格式也很死板,這就是你為什么需要加上幾行命令選項.然而,這還不算太壞,因為GNU縮進格式的創(chuàng)造者也記得K&R的權威, (GNU沒有罪,他們僅僅是在這件事情上錯誤的引導了人們) ,你要做的就只有輸入選項-kr -i8(表示K&R,縮進8個字符).縮進有很多功能,特別是當它建議你重新格式你的代碼的時候,你應該看看幫助.但要記住: 縮進不是風格很差的程序的萬靈丹.C語言編寫風格 當開發(fā)人員把C語言程序寫的越來越長的時候,他們發(fā)現(xiàn)維護這些程序需要花更多的
11、功夫去讀以前所編寫的程序。保持一種良好的編碼風格,對于一個開發(fā)團隊或者自主開發(fā)者都是一件好事情。在這里要介紹的編程風格就是為了讓初學者了解C語言的一些編寫風格,使自己編寫的程序,可讀性,移植性,可維護性等更好,這是學習C語言必須學習的一種技能。這就象我們寫文章一樣,段落縮進兩個文字這樣的風格. 1、 縮進對于函數(shù),選擇,循環(huán)控制,在進入下級的程序段時,為了使結構清晰,一般將下級的程序段向后縮進一段位置??s進的大小是為了清楚的定義一個塊的開始和結束,特別是當你已經編寫了很長的代碼時,你會發(fā)現(xiàn)一個大的縮進格式使得你對程序的理解更容易,因為程序更有層次感,可以最快的找到需要查看的程序塊。建議使用一個
12、TAB位置(8個字節(jié))進行縮進,有些代碼編輯工具顯示一個TAB位置為4個字節(jié),這些都能使程序更清晰?,F(xiàn)在,有一些人說,使用8個字符的縮進使得代碼離右邊很近,在80個字符寬度的終端屏幕上看程序很難受。回答是,但你的程序有3個以上的縮進的時候,你就應該修改你的程序。總之,8個字符的縮進使得程序易讀,還有一個附加的好處,就是它能在你將程序變得嵌套層數(shù)太多的時候給你警告。這個時候,你應該修改你的程序,太多的嵌套對于程序執(zhí)行的效率和易讀性都是致命的殺手,可以考慮使用函數(shù)或者改變程序結構。int fother()程序塊if(.)程序塊else程序塊 for(.)程序塊 2、 大括號的位置 一般情況下,有下
13、列幾種書寫方式:(1)if(xy)t=x; x=y; y=t;(2)Kernighan和Ritchie的經典方式if(xy)t=x; x=y; y=t;(3)if(xy) t=x; x=y; y=t;推薦使用(1)方式,很明顯,這種方式能更清楚的看到程序塊的開始和結束的位置。但對于很簡單的程序塊,也可以使用(3)方式。 3、 命名系統(tǒng)除了常用的規(guī)則,如#define 常量應全部大寫,變量命名的基本規(guī)則等之外,還要養(yǎng)成一個良好的命名的習慣。不要使用漢語拼音命名,盡量使用英文單詞,常用的縮寫,下劃線,數(shù)字等,這樣更容易理解變量的意義。但是也要避免過長的變量名和函數(shù)名。當一個工程越做越大,命名可以越
14、來越難,因為重名現(xiàn)象會時有發(fā)生?,F(xiàn)在比較流行的命名規(guī)則如匈牙利命名法很好的解決了這個問題。匈牙利命名法通過在變量名前面加上相應的小寫字母的符號標識作為前綴,標識出變量的作用域,類型等。這些符號可以多個同時使用,順序是先m_(成員變量),再指針,再簡單數(shù)據(jù)類型,再其他。例如:m_lpszStr, 表示指向一個以0字符結尾的字符串的長指針成員變量。可能有些開發(fā)人員認為匈牙利命名法有些冗長,但對于開發(fā)過程中,這種命名法則可以比較系統(tǒng)的,徹底的解決命名問題。但對于比較小的程序,也可以使用簡單的命名方式。 4、函數(shù)函數(shù)應該短小而迷人,而且它只作一件事情。它應只覆蓋一到兩個屏幕,并且只作一件事情,而且將它
15、做好。一個函數(shù)的最大長度和函數(shù)的復雜程度以及縮進大小成反比。于是,如果你已經寫了簡單但長度較長的的函數(shù),而且你已經對不同的情況做了很多很小的事情,寫一個更長一點的函數(shù)也是無所謂的。然而,假如你要寫一個很復雜的函數(shù),而且你已經估計到假如一般人讀這個函數(shù),他可能都不知道這個函數(shù)在說些什么,這個時候,使用具有描述性名字的有幫助的函數(shù)。另外一個需要考慮的是局部變量的數(shù)量。他們不應該超過5-10個,否則你有可能會出錯。重新考慮這個函數(shù),將他們分割成更小的函數(shù)。人的大腦通??梢院苋菀椎挠涀?件不同的事情,超過這個數(shù)量會引起混亂。你知道你很聰明,但是你可能仍想去明白2周以前的做的事情。 5、 注釋注釋一般采取的兩種方式:對一個程序塊注釋和對一行程序注釋。/*比較x,y大小*/if(xy)t=x; x=y; y=t; /*交換x,y*/注釋是一件很好的事情,但是過多的注釋也是危險的,不要試圖區(qū)解釋你的代碼是注釋如何如何的好。你應該將代碼寫得更好,而不是花費大量的時間去解釋那些糟糕的代碼。通常情況下,你的注釋是說明你的代碼做些什么,而不是怎么做的。而且,要試圖避免將注釋插在一個函數(shù)體里。假如這個函數(shù)確實很復雜,你需要在其中有部分的注釋,最好還是把復雜的函數(shù)拆分成幾個簡單的函數(shù)。也可以將注釋寫在函數(shù)前,告訴別人它做些什么事情,和可能為什么要這樣做。 6、 空格與空行不要讓自己的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國塑料土工格柵市場調查研究報告
- 《癌癥病程中使用高蛋白的基本原理》翻譯實踐報告
- 帕金森病伴慢性疼痛患者的臨床特征及睡眠障礙的研究
- 體育旅游相關行業(yè)投資規(guī)劃報告范本
- 配網(wǎng)母線電壓異常故障判斷與處理
- 課堂管理的組織與管理
- 最美鄉(xiāng)村民宿創(chuàng)業(yè)
- 課堂展示流程
- 鐵碳-碳負載nZVI強化微電解耦合Fenton氧化處理EDTA-Ni廢水研究
- 基于Turbo編碼的GMSK信號接收機系統(tǒng)設計與仿真
- 人教版(2024)六年級全一冊 第17課 設計我的種植園
- 尊師重教講義
- 2024小學數(shù)學義務教育新課程標準(2022版)必考題庫與答案
- 辦公用品及耗材采購服務投標方案(技術方案)
- 《十萬個為什么》整本閱讀指導(導讀)
- 2024年全國職業(yè)院校技能大賽高職組(智能節(jié)水系統(tǒng)設計與安裝賽項)考試題庫-下(多選、判斷題)
- (212題)2024綜合基礎知識考試題庫及解析
- 信息技術興趣小組活動記錄
- 第十二章目標識別課件
- 農民田間學校規(guī)章制度
- 施工電梯基礎驗算
評論
0/150
提交評論