跳至內容

GNU編碼標準

出自Taiwan Tongues 台語維基
於 2025年8月22日 (五) 18:41 由 TaiwanTonguesApiRobot留言 | 貢獻 所做的修訂 (從 JSON 檔案批量匯入)

(差異) ←上個修訂 | 已批准修訂 (差異) | 最新修訂 (差異) | 下個修訂→ (差異)

GNU 編碼標準是 GNU 項目編寫程序代碼的一套規則指南,由 Richard Stallman 佮其他 GNU 項目志願者撰寫。伊的文檔嘛是 GNU 項目的一部份,會當對 GNU 網站提著。伊本身是指導 GNU 自由軟體的 C 語言代碼的,但是真濟規定攏會當推廣使用。GNU 鼓勵貢獻者(包括無咧使用 C 語言實現的)遵循這一標準。

代碼格式

GNU 編碼標準著 C 語言代碼的格式有嚴格的規範。下跤是一个典型的例:

會當看著,標準總是將塊看做語句的縮入去。每一對花括號、方括號抑是括弧攏愛按怎仝途,愛按怎仝一列。

一般會用得考慮以上 GNU Emacs 為會當靠權威,格式化會著 GNU 編碼標準的代碼。佇咧 Emacs 里縮起來足歹看的代碼,經過修改(比如講添加括號), 會當變成著 Emacs 閣較友好的形式。

分割長行

「 欲表達拆做濟行的時,愛佇一个運算符的頭前拆分,莫佇伊的後壁拆分開。」

比如講:

注釋

標準里特別強調英文注釋的重要性。

> 佇咧 GNU 程序中寫注釋,請使用英文,因為差不多各國所有的程式設計師攏會當讀啊英語。你若英語寫了無啥好,嘛請你盡量用英文寫,然後請其他的人鬥修改。你若無法度用英文寫評論,遐爾倩揣人和你做伙做工課,共你的注釋共伊翻做英文。 > >

注釋是由完整的句子所組成的,句的首字母是大寫的。每一个句後壁佮兩个空格。Emacs 嘛會使此判斷一个句佇佗位結束,後一个句對佗位開始。

去進行條件判斷的預處理指令,較長抑是講較複雜的,彼每一个 ` # else ` 和 ` # endif ` 攏應該佮一條注釋,解說測試的條件。

文件

標準要求,佇咧 ` / usr ` 和 ` / etc ` 以干焦讀方式掛載,所有的程序嘛攏會當有運行。所以,出於內部目的修改的文件(日誌文件、鎖定文件、臨時文件等等)無應該愛儉佇這兩个所在。一个例外是欲更新 ` / etc ` 中的系統配置文件,另外一个戶明確要求需要修改。

可移植性

GNU 編碼標準嘿會當徙栽性有著按呢的定義:佇咧 Unix 世界內底的會當徙栽性,是講乎「佇咧 Unix 之間」;佇程序當中,這種會當移植性值得有,但毋是一定愛有。

根據這一標準,可移植性問題無大。因為原始碼的編寫干焦考慮 GCC(GNU C 編譯器)的編譯行為,程序嘛干焦佇一个系統—— GNU 系統上運行。

但是猶原有一个會當移植性的問題。標準明確的規定,程序應該會當佇各類 CPU 最運行。標準規定,GNU 無支持嘛袂支持十六个系統,但是必須會當應對所有無仝款的三十二位佮六十四位系統。

批評

Linux 內核強烈反對這種風格:「 共你建議共 GNU 編碼標準列印一份,猶毋過無愛去讀伊,是去共燒掉,這是一个非常好的象徵性的動作。」

Steve McConnell 佇咧 Code Complete 這冊內底嘛建議毋通使用這款風格。伊認為講,按呢的大括號縮入予代碼會當讀性降低矣。伊將按呢的示例代碼標記做「編碼恐怖」,表明這款的代碼特別危險。

參見

  • Gnits 標準

參考文獻

外部連結

  • GNU 網站頂懸的 GNU 編碼標準
  • GNU 編碼標準的 Eclipse 代碼樣式格化程序