當前位置:編程學習大全網 - 編程語言 - 關於C語言的,下周要交,幫我啊~~~~

關於C語言的,下周要交,幫我啊~~~~

第壹章:縮進格式

Tab是8個字符,於是縮進也是8個字符.有很多怪異的風格,他們將縮進格式定義為4個字符(設置為2個字符!)的深度,這就象試圖將PI定義為3壹樣讓人難以接受.

理由是:縮進的大小是為了清楚的定義壹個塊的開始和結束.特別是當妳已經在計算機前面呆了20多個小時了以後,妳會發現壹個大的縮進格式使得妳對程序的理解更容易.

現在,有壹些人說,使用8個字符的縮進使得代碼離右邊很近,在80個字符寬度的終端屏幕上看程序很難受.回答是,但妳的程序有3個以上的縮進的時候,妳就應該修改妳的程序.

總之,8個字符的縮進使得程序易讀,還有壹個附加的好處,就是它能在妳將程序變得嵌套層數太多的時候給妳警告.這個時候,妳應該修改妳的程序.

第二章:大符號的位置

另外壹個C程序編程風格的問題是對大括號的處理.同縮進大小不同,幾乎沒有什麽理由去選擇壹種而不選擇另外壹種風格,但有壹種推薦的風格,它是Kernighan和Ritchie的經典的那本書帶來的,它將開始

的大括號放在壹行的最後,而將結束大括號放在壹行的第壹位,如下所示:

if (x is true) { we do y }

然而,還有壹種特殊的情況:命名函數:開始的括號是放在下壹行的第壹位,如下:

int function(int x) { body of function }

所有非正統的人會非難這種不壹致性,但是,所有思維正常的人明白: (第壹) K&R是___對___的,(第二)如果K&R不對,請參見第壹條. (:-))......另外,函數也是特殊的,不壹定非得壹致.

需要註意的是結束的括號在它所占的那壹行是空的,__除了__它跟隨著同壹條語句的繼續符號.如"while"在do-while循環中,或者"else"在if語句中.如下:

do { body of do-loop } while (condition);

以及

if (x == y) { .. } else if (x > y) { ... } else { .... }

理由: K&R.

另外,註意到這種大括號的放置方法減小了空行的數量,但卻沒有減少可讀性.於是,在屏幕大小受到限制的時候,妳就可以有更多的空行來寫些註釋了.

第三章:命名系統

C是壹種簡潔的語言,那麽,命名也應該是簡潔的.同MODULE-2以及ASCAL語言不同的是,C程序員不使用諸如ThisVariableIsATemporaryCounter之類的命名方式.壹個C語言的程序員會將之命名為"tmp",這很容易書寫,且並不是那麽難以去理解.

然而,當混合類型的名字不得不出現的時候,描述性名字對全局變量來說是必要的了.調用壹個名為"foo"全局的函數是很讓人惱火的.全局變量(只有妳必須使用的時候才使用它) ,就象全局函數壹樣,需要描述性的命名方式.假如妳有壹個函數用來計算活動用戶的數量,妳應該這樣命名--"count_active_users()"--或另外的相近的形式,妳不應命名為"cntusr()".

有壹種稱為Hungarian命名方式,它將函數的類型編碼寫入變量名中,這種方式是腦子有毛病的壹種表現---編譯器知道這個類型而且會去檢查它,而這樣只會迷惑程序員. --知道為什麽Micro$oft為什麽會生產這麽多"臭蟲"程序了把!!.

局部變量的命名應該短小精悍.假如妳有壹個隨機的整數循環計數器,它有可能有"i",如果沒有任何可能使得它能被誤解的話,將其寫作"loop_counter"是效率低下的.同樣的,""tmp"可以是任何臨時數值的函數變量.

如果妳害怕混淆妳的局部變量的名字,還有另外壹個問題,就是稱

function-growth-hormone-imbalancesyndrome.

第四章:函數

函數應該短小而迷人,而且它只作壹件事情.它應只覆蓋壹到兩個屏幕(80*24壹屏),並且只作壹件事情,而且將它做好.(這不就是UNIX的風格嗎,譯者註).

壹個函數的最大長度和函數的復雜程度以及縮進大小成反比.於是,如果妳已經寫了簡單但長度較長的的函數,而且妳已經對不同的情況做了很多很小的事情,寫壹個更長壹點的函數也是無所謂的.

然而,假如妳要寫壹個很復雜的函數,而且妳已經估計到假如壹般人讀這個函數,他可能都不知道這個函數在說些什麽,這個時候,使用具有描述性名字的有幫助的函數.

另外壹個需要考慮的是局部變量的數量.他們不應該超過5-10個,否則妳有可能會出錯.重新考慮這個函數,將他們分割成更小的函數.人的大腦通常可以很容易的記住7件不同的事情,超過這個數量會引起混亂.妳知道妳很聰明,但是妳可能仍想去明白2周以前的做的事情.

第5章:註釋

註釋是壹件很好的事情,但是過多的註釋也是危險的,不要試圖區解釋妳的代碼是註釋如何如何的好:妳應該將代碼寫得更好,而不是花費大量的時間去解釋那些糟糕的代碼.

通常情況下,妳的註釋是說明妳的代碼做些什麽,而不是怎麽做的.而且,要試圖避免將註釋插在壹個函數體裏:假如這個函數確實很復雜,妳需要在其中有部分的註釋,妳應該回到第四章看看.妳可以寫些簡短的註釋來註明或警告那些妳認為特別聰明(或極其醜陋)的部分,但是妳必須要避免過多.取而代之的是,將註釋寫在函數前,告訴別人它做些什麽事情,和可能為什麽要這樣做.

第六章:妳已經深陷其中了.

不要著急.妳有可能已經被告之"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 with the Linux kernel."(interactive) (c-mode) (c-set-style"K&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下編輯文件的時候,它會自動切換到linux-c-mode .

但是,假如妳還不能讓emaces去自動處理文件的格式,不要緊張,妳還有壹樣東西: "縮進" .

GNU的縮進格式也很死板,這就是妳為什麽需要加上幾行命令選項.然而,這還不算太壞,因為GNU縮進格式的創造者也記得K&R的權威, (GNU沒有罪,他們僅僅是在這件事情上錯誤的引導了人們) ,妳要做的就只有輸入選項"-kr -i8"(表示"K&R,縮進8個字符).

"縮進"有很多功能,特別是當它建議妳重新格式妳的代碼的時候,妳應該看看幫助.但要記住: "縮進"不是風格很差的程序的萬靈丹.

  • 上一篇:Dota 林肯法球
  • 下一篇:關於c語言和數據結構的,將壹個鏈式隊列中的元素依次取出,並打印元素的值。代碼如下
  • copyright 2024編程學習大全網