衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

代碼編程規范的排版風格

汽車電子技術 ? 來源:大橙子瘋嵌入式 ? 作者:大橙子瘋 ? 2023-02-15 14:56 ? 次閱讀

前言

這篇重點介紹一下代碼編程的排版風格和自動排版工具

代碼規范化中的排版基本上有七大風格,主要體現在縮進、空行、代碼行、空格、成對書寫、對齊、注釋七方面的書寫規范上。

規范要求

縮進

程序塊采用縮進風格編寫,縮進可以使程序更有層次感,每次縮進一般為 4 個空格(部分要求為一個制表符Tab;我個人喜歡用空格,因為制表符不同編輯器縮進不同,雖然能設置,但是麻煩)

原則是:如果地位相等,則不需要縮進;如果屬于某一個代碼的內部代碼就需要縮進


空行

空行起著分隔程序段落的作用。空行得體將使程序的布局更加清晰。空行不會浪費內存,雖然在文檔中比較多,但是值得

  1. 定義變量后要空行。盡可能在定義變量的同時初始化該變量,即遵循就近原則;如果變量的引用和定義相隔比較遠,那么變量的初始化就很容易被忘記。若引用了未被初始化的變量,就會導致程序出錯
  2. 每個函數定義結束之后都要加空行
  3. 結合1、2兩點綜合來說,相對獨立的程序塊之間、變量說明之后必須加空行。比如上面幾行代碼完成的是一個功能,下面幾行代碼完成的是另一個功能,那么它們中間就要加空行。這樣看起來更清晰
1isFoo = true;
 2// 空行
 3if (isFoo) 
 4{
 5    bar();
 6} 
 7else 
 8{
 9    anotherBar();
10}
11// 空行
12isBar = false;

代碼行

  1. 一行代碼只做一件事情,如只定義一個變量,或只寫一條語句。這樣的代碼容易閱讀,并且便于寫注釋
  2. iffordowhilecaseswitchdefault等語句獨占一行,執行語句不得緊跟其后

不論執行語句有多少行,就算只有一行也要加{},并且遵循對齊的原則,這樣可以防止書寫失誤

  1. 一條語句不能過長,如不能拆分需要分行寫,對于目前大多數的PC來說,132 比較合適(80/132是VTY常見的行寬值)

對于新PC寬屏顯示器較多的產品來說,可以設置更大的值; 且目前的軟件大多都能設置并顯示這個寬度的提示線

1// 錯誤示范
2if (...){...}
3
4// 正確示范
5if (...)
6{
7    ...
8}

空格

  1. 關鍵字之后要留空格。像 constcase 等關鍵字之后至少要留一個空格,否則無法辨析關鍵字。像 ifforwhile 等關鍵字之后應留一個空格再跟左括號(,以突出關鍵字
1// 錯誤示范
2if(...)
3
4// 正確示范
5if (...)
  1. 函數名之后不要留空格,應緊跟左括號(,以與關鍵字區別
1// 錯誤示范
2void move (char *buf, uint32_t length);
3
4// 正確示范
5void move(char *buf, uint32_t length);
  1. (向后緊跟;),;這三個向前緊跟;緊跟處不留空格
1// 錯誤示范
2move ( buf , 35 ) ;
3
4// 正確示范
5move(buf, 35);
  1. ,之后要留空格。如果;不是一行的結束符號,其后要留空格
1// 錯誤示范
2move(buf,35);
3
4// 正確示范
5move(buf, 35);
  1. 賦值運算符、關系運算符、算術運算符、邏輯運算符、位運算符,如 ===!=+=-==/=%=>>=<<=&=^=|=<<=>>=+/%&;|&&||<<>>;^ 等雙目運算符的前后應當加空格(運算符“%”是求余運算符,與 printf%d“%”不同,所以 %d 中的“%”前后不用加空格)
1// 錯誤示范
2num+=5;
3hex=hex&0x05;
4printf("% d", num);
5
6// 正確示范
7num += 5;
8hex = hex & 0x05;
9printf("%d", num);
  1. 單目運算符 !~++--*& 等前后不需要加空格
1// 錯誤示范
2cnt ++;
3boolVal = ! boolVal;
4
5// 正確示范
6cnt++;
7boolVal = !boolVal;
  1. 像數組符號[]、結構體成員運算符.、和指向結構體成員運算符->,這類操作符前后不加空格
1// 錯誤示范
2char buf [ 50 ];
3tInfo -> mem = 0;
4
5// 正確示范
6char buf[50];
7tInfo->mem = 0;
  1. 對于表達式比較長的for語句和if語句,為了緊湊起見,可以適當地去掉一些空格。但 forif 后面緊跟的空格不可以刪,其后面的語句可以根據語句的長度適當地去掉一些空格。例如:for (i=0; i<10; i++),即for和分號后面保留空格,=< 前后的空格去掉

成對書寫

成對的符號一定要成對書寫,如 (){}。不要寫完左括號然后寫內容最后再補右括號,這樣很容易漏掉右括號,尤其是寫嵌套程序的時候。


對齊

對齊主要是針對大括號{}說的

  1. {}分別都要獨占一行。互為一對的{}要位于同一列,并且與引用它們的語句左對齊
  2. { }之內的代碼要向內一個縮進,且同一地位的要左對齊,地位不同的繼續縮進
1// 錯誤示范
 2int main(void){
 3int val = 0;
 4}
 5
 6// 正確示范
 7// 錯誤示范
 8int main(void)
 9{
10    int val = 0;
11}

注釋

C語言中一行注釋一般采用//…,多行注釋必須采用 /*…*/。注釋通常用于重要的代碼行或段落提示。在一般情況下,源程序有效注釋量必須在 20% 以上。雖然注釋有助于理解代碼,但注意不可過多地使用注釋,注釋太多會讓人眼花繚亂。

  1. 注釋用使用對代碼的功能做解釋,并不是說明是怎么做的
  2. 對于一些巧妙地、用特殊方式實現功能的代碼,可以使用注釋說明這樣做的目的或好處等
  3. 代碼十分明確的,一目了然的,則不必增加注釋,否則就是多余的注釋,如 int minValue = 5; // 定義最小值為5
  4. 邊寫代碼邊注釋,修改代碼的同時要修改相應的注釋,以保證注釋與代碼的一致性,不再有用的注釋要刪除
  5. 每一條宏定義的右邊必須要有注釋,說明其作用
  6. 相關函數和結構體等需要注釋,具體注釋方式請參考文檔中的“注釋規范”內容

排版工具


[嵌入式軟件開發常用軟件]中提到的源格式化工具Astyle,官網地址

http://astyle.sourceforge.net/

Astyle 是一個開源的源碼格式化工具插件,可以集成在 KEIL、IAR 或者文本編輯器等多款軟件中,作為一個腳本自動格式話代碼風格,十分方便。

根據上述排版風格,我設置的指令是:

--style=allman -t -xV -C -f -p -H -k3 -y -xb -j -U %f

如下圖,隨便打開一個糟糕的代碼文件,通過 KEIL 集成的 Astyle工具自動格式化代碼風格。

圖片

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 程序
    +關注

    關注

    117

    文章

    3795

    瀏覽量

    81416
  • 代碼
    +關注

    關注

    30

    文章

    4827

    瀏覽量

    69055
  • 編輯器
    +關注

    關注

    1

    文章

    806

    瀏覽量

    31293
收藏 人收藏

    評論

    相關推薦

    Linux C語言的編程規范

    Linux有獨特的編程風格,在內核源代碼目錄Documentation/CodingStyle,詳細描述代碼風格
    發表于 07-21 14:48 ?416次閱讀

    MATLAB 編程風格指南

    thebeginning.”(良好的寫作規范的程序比糟糕的寫作規范的要好,因為他們具有較少的錯誤、易于調試與修改,因此,從一開始就考慮風格是很重要的)。本指南列舉的MATLAB 代碼
    發表于 09-22 16:19

    FPGA實戰演練邏輯篇39:代碼風格與書寫規范

    代碼風格與書寫規范本文節選自特權同學的圖書《FPGA設計實戰演練(邏輯篇)》配套例程下載鏈接:http://pan.baidu.com/s/1pJ5bCtt 不同的人可能對代碼
    發表于 06-19 10:38

    Verilog HDL代碼書寫規范

    1. 目的本規范的目的是提高書寫代碼的可讀性、可修改性、可重用性,優化代碼綜合和仿真的結果,指導設計工程師使用VerilogHDL規范代碼
    發表于 12-08 14:36

    Linux內核編碼風格(編程代碼風格推薦)

    這是翻譯版本,英文原版是linux源碼Documentation文件夾下的CodingStyle一個良好風格的程序看起來直觀、美觀,便于閱讀,還能有助于對程序的理解,特別在代碼量比較大情況下更顯
    發表于 08-24 09:45

    C語言編程的基本規范有哪些?

    為了提高源程序的質量和可維護性,從而最終提高軟件產品生產力,特編寫此規范。本標準規定了程序設計人員進行程序設計時必須遵循的規范。本規范主要針對單片機編程語言和08編譯器而言,包括
    發表于 02-24 07:22

    嵌入式軟件開發中所總結出編程規范經驗

    〇、前言代碼編程我認為也是一門藝術,優美的代碼使人賞心悅目。然而編程規范并沒有唯一的行業標準,就像windows和linux的
    發表于 12-15 06:00

    單片機程序設計編程規范分享

    嚴格,品質要求高的軟件公司對員工編寫代碼風格都有硬性規定,例如縮排的使用,TAB 的長度,函數變量的命名方式. 這些規定的明顯好處是可以統一規范不同程序員所編制的代碼,提升程序
    發表于 09-25 08:06

    華為軟件編程規范下載

    華為軟件編程規范下載 :1 排版 2 注釋3 標識符命名4 可讀性5 變量、結構6 函數、過程7 可測性8 程序效率9 質量保證10 代碼編輯、編譯、審查11
    發表于 04-15 10:48 ?16次下載
    華為軟件<b class='flag-5'>編程</b><b class='flag-5'>規范</b>下載

    C#編程代碼規范

    C#編程代碼規范 注:目的:為了保證開發隊伍中的所有程序員都能夠理解其他人編寫的代碼。 參考: 《華為編碼規范和范
    發表于 02-09 16:11 ?81次下載

    latex排版教程

    如果是純文學著作,完全可以交給出版社去排版。但是對于編程技術書籍,文字之間 還穿插代碼和圖表,那么出版社的專業排版人員很難排出符合程序員審美觀的版面,甚至 有可能造成技術錯誤。這t
    發表于 10-30 17:07 ?0次下載

    開關電源的PCB設計(布局、排版、走線)規范

    開關電源的PCB設計(布局、排版、走線)規范
    發表于 09-06 16:03 ?0次下載

    RT-Thread 編程風格

    ,其中 代碼編寫規范 就是很重要的一環。 RT-Thread 編程風格 這是一份 RT-Thread 開發人員的開發指引。RT-Thread 做為一份開源軟件,它需要由不同的人采用合作
    的頭像 發表于 12-06 19:55 ?1155次閱讀

    代碼編程規范之命名規范

    標識符的命名規則歷來是一個敏感話題,典型的命名風格如unix風格、windows風格等,從來無法達成共識。實際上,各種風格都有其優勢也有其劣勢,而且往往和個人的審美觀有關。對標識符定義
    的頭像 發表于 02-15 14:57 ?1427次閱讀

    代碼編程規范之注釋風格

    注釋的原則是有助于對程序的閱讀理解以及提供二次開發所需文檔,注釋的方式有很多,但是業內常用的規范是 Doxygen 代碼注釋規范。遵循原則為,說明性文件、函數接口必須充分注釋說明。全局變量需要說明功能及取值范圍,需要自行處理資料
    的頭像 發表于 02-15 15:01 ?1906次閱讀
    <b class='flag-5'>代碼</b><b class='flag-5'>編程</b><b class='flag-5'>規范</b>之注釋<b class='flag-5'>風格</b>
    顶尖百家乐的玩法技巧和规则| 缅甸百家乐赌城| 百家乐怎么样投注| 网络百家乐程序| 百家乐定位胆技巧| 大发888打不开| 丹寨县| 澳门百家乐官网国际| 百家乐官网桌定制| 百家乐是片人的吗| 百家乐博百家乐的玩法技巧和规则| 顶级赌场dj| 帝王百家乐官网新足球平台| 百家乐官网套路| 百家乐代打是真的吗| 富田太阳城二期| 海林市| 金银岛百家乐官网的玩法技巧和规则 | 联众百家乐官网的玩法技巧和规则 | 注册百家乐官网送彩金| 百家乐官网作弊| 雅加达百家乐的玩法技巧和规则| 网上百家乐优博| 太阳百家乐管理网| 百家乐官网怎么会赢| 任你博百家乐官网娱乐城| 七匹狼百家乐的玩法技巧和规则| 金宝博188| 百家乐官网推锅| 百家乐庄闲和各是多少| 澳门博彩网站| 威尼斯人娱乐城怎么样| 屏山县| 八卦24山| 大发888官网授权网| 百家乐官网手机投注平台| 属狗与属鸡做生意| 大发888在线娱乐| 闲和庄百家乐官网娱乐平台| 云鼎百家乐作弊| 真人百家乐官网技巧|