天天看點

《Linux 進階程式設計(第三版)》——1.4 Linux下編碼風格

本節書摘來自異步社群《linux 進階程式設計(第三版)》一書中的第1章,第1.4節,作者:楊宗德 , 呂光宏 , 劉雍著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

linux 進階程式設計(第三版)

下面為讀者列出gnu編碼規範和linux核心編碼規範示例。

1.4.1 gnu編碼規範

下面是gnu emacs中的一段代碼。

分析上面的代碼可以看出gnu具有如下編碼風格。

函數開頭的左花括号放到最左邊,避免把任何其他的左花括号、左括号或者左方括号放到最左邊。

盡力避免讓兩個不同優先級的操作符出現在相同的對齊方式中。

每個程式開頭都應該有一段簡短的說明其功能的注釋。例如gnu emacs上面的代碼中的注釋。

每個函數都加上注釋,以說明函數做了些什麼,需要哪些種類的參數,參數可能值的含義以及用途。

不要跨行聲明多個變量。在每一行中都以一個新的聲明開頭。

當在一個if語句中嵌套了另一個if-else語句時,應用花括号把if-else括起來。

要在同一個聲明中同時說明結構辨別和變量,或者結構辨別和類型定義(typedef)。

盡量避免在if的條件中進行指派。

在名字中使用下劃線以分隔單詞,盡量使用小寫;在宏或者枚舉中通常使用大寫常量。

使用一個指令行選項時,給出的變量應該在選項含義的說明之後,而不是選項字元之後。

另外,linux有很多工具來幫助程式員養成良好編碼規範。除了vim和emacs以外,還有indent工具可以幫程式員美化c/c++源代碼。下面用這條指令可将linux核心程式設計風格的程式quan.c轉變為gnu程式設計風格。

<code>[root@localhost ~]#$ indent -gnu quan.c</code>

1.4.2 linux核心編碼規範

下面是linux核心2.6.13目錄archi386kernel中的numaq.c的節選代碼,現在并不要求讀懂此代碼,而是看linux的核心程式設計風格。

分析以上代碼可以看出linux核心代碼具有如下風格。

縮進采用tab制表符。

在if或者for循環中,将開始的大括号放在一行的最後,而将結束大括号放在本段語句結束行的第一位,函數中的大括号除外。

變量命名盡量使用簡短的名字,簡寫或者單詞間采用了_隔開,比如代碼中的sys_cfg_data。

函數最好短小精悍,一個函數最好隻做一件事情,而且函數中的變量一般不超過10個,大小一般都小于80行。

一個子產品的注釋一般注明了作者、版權、注釋說明代碼的功能,而不是說明其實作原理,這也和linux的文化有關。

以上是gnu編碼風格和linux核心編碼風格,兩種風格展現着兩種不同的文化精神,有些地方相似,有些地方迥然不同,但是目的隻有一個:形成一個清晰、美觀、可維護、友善擴充的代碼。讀者可以根據個人情況選擇其中一種編碼規範來編寫自己的程式。

繼續閱讀