C語言的編程風格

來源:互聯網
上載者:User

縮排格式

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.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.