linux核心編碼風格

2021-05-06 15:57:20 字數 2611 閱讀 7105

linux核心編碼風格

linus torvalds

這是一篇描述linux

核心編碼風格的短小文件。編碼風格是個人化的,而且我不想將自己的意見強加在任何人身上,但是編碼風格卻和我必須要維護的東西是密切相關的。至少,你可以考慮這點的觀點。

首先,我建議列印乙份關於

gnu編碼標準

的影印件。我並不期望你讀,燒掉它吧,那只是乙個標誌性的雕塑。

不管怎麼樣,從這裡開始:

第一章:縮排

tabs是

8個位元組,因此縮排也是

8個位元組。有一些**的人試著將縮排改為

4個位元組(甚至是

2個位元組)的深度,那就象有些人試將

pi的值定義為

3一樣。

理由:縮排背後隱藏的是清晰地定義乙個控制塊的開始和結束。特別是你將一直看著你的螢幕整整20

個小時,你會發現如果有乙個大的縮排,那將會更容易,清晰的看到縮排是怎麼樣工作的。

現在有些人聲稱8

個位元組的縮排會使得**太靠右,那樣我們在

80位元組的終端螢幕上閱讀會很不輕鬆。對於這個問題的回答是,如果你需要

3個層次以上的縮排(2,

4,8chars),

你只是將自己陷入更大的困境中,你會希望縮排是固定的。

簡而言之,8

第二章:花括號位置

另乙個常常和c

風格相關的話題就是花括號的位置問題。不像縮排大小,在選擇花括號位置策略時很少有技術性的理由,但是更希望的方式是由

kernighan

和ritchie

首先提出來的,將開始花括號放在一行的結束位置,結束花括號放在一行的開始位置,因此:

if(x is true) 

然而,有一種特例,即命名函式:它們將開始花括號放在下一行的開始位置,因此:

int function(int x)

世界上的**的人們已經聲稱這種不一致性總是存在的,但是理智的人都認為k&r

是正確的。而且,函式是特俗的。(你不會在

c中巢狀函式)

注意結束花括號是單獨一行的,除了在以下一些情形下:(花括號後緊跟著繼續闡述的相同語句)

dowhile(condition)

andif(x==y)else if(x>y) else 

同樣,注意花括號的放置可以減少空行的數目,而不會帶來不可讀性。因此,由於新行的提供不是可再生的資源(想想只有25

行的終端螢幕),你可以在更多的空行上標上自己的注釋。

第三章:命名

c是乙個簡樸的語言,你的命名也應該如此。與

modula-2

和pascal

程式設計師不同,

c程式設計師不需要使用可愛的名字,像

thisvariableisatemporarycounter.

。乙個c

語言程式設計師將稱這個變數為

tmp,便於書寫,也不缺乏可讀性。

然而,當大小寫混合的名字使你不禁皺眉時,對於那些對全域性變數進行描述的名字來說,採用大小寫混合的方式是一種必須。把乙個全域性函式叫做foo

將會引來強烈滴攻擊的。

將乙個函式的型別編碼成乙個名字是需要費盡心思的。編譯器知道函式的型別並且進行檢查,但是那卻會讓乙個程式設計師疑惑。微軟會編寫出一些具有漏洞的程式就不足為奇了。

本地變數應該簡短到位。如果你需要一些隨意的整型迴圈計數器,那可能可以叫做i

。把它叫做

loop_counter

是沒有必要的,如果沒有誤解的可能性。類似的,

tmp可以是任意型別的變數,用於儲存乙個臨時性的變數。

如果你害怕混淆本地變數的名字,你將會有另外乙個問題,這個問題叫做函式增長荷爾蒙失調症候群。見下章。

第四章函式

函式應該短小精煉,並且只做一件事情,並且做好。它們內容長短應該在乙個螢幕或者兩個螢幕。(iso/ansi

螢幕的大小是

80*24),。

語句,你需要做根據很多不同的情形做很多很小的事情。這樣的函式可以是長的。

另外乙個量度函式的標準是區域性變數的數目。變數不應該超過5-10

個,不然你會犯錯誤。重新構思函式,然後將這個函式分解成幾個小的函式。乙個人的大腦通常容易的記住大約

7件不同的事情,更多的話,人就容易混淆起來。如果你覺得你聰明,那麼你也許可以理解兩周前你所作的事情。

第五章:注釋

注釋是好的習慣,可過度注釋也是一種危險。不要試著在注釋中去去解釋你的**是怎麼樣實現的。把**寫下來,那麼**是如何實現的更明顯,解釋已經寫下來的**是浪費時間的。

通常,你要讓你的注釋告訴人們你的**是做什麼的,而不是如何。同樣,避免把注釋放在函式函式體內。如果函式很複雜,以至於你需要將在不同的位置進行注釋,那麼你應該先返回到第四章內(筆者意思是對複雜函式進行分解,拆分為幾個小的函式)。你可以寫一些小的注釋來提醒和警告一些特別好的或者壞的**,但是避免太多這樣的注釋。相反,把注釋放在函式的前面,告訴人們這個函式是做什麼的,如果可能,可以寫上為什麼這樣做。

第六章:emacs

工具的使用

你可能已經從長期使用linux

的使用者那聽說了

gnu emacs

編輯器可以自動地編排

c原始檔。而且你也確實注意到了那點。

Linux作業系統核心編碼風格

第 1 章 縮排 tabs 製表符 是8個字元的大小。簡而言之,8個字元的縮排使程式更易讀,而且當你把功能隱藏的太深時,多層次的縮排還會對此很直觀的給出警告。要留心這種警告資訊。第 2 章 放置花括號 c程式中另乙個要主意的就是花括號的放置。與縮排尺寸不同的是,關於如何放置花括號沒有技術上的理由。但...

Linux核心管理風格

來自 核心月談 奎亮 original documentation process management style.rst translator alex shi alex.shi linux.alibaba.com 核心社群管理是乙個很獨特很有挑戰性的事情,各系統維護者擁有很大的權利,卻又無法命...

Linux核心管理風格

original documentation process management style.rst translator alex shi alex.shi linux.alibaba.com 核心社群管理是乙個很獨特很有挑戰性的事情,各系統維護者擁有很大的權利,卻又無法命令和管理社群參與者 一...