0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

嵌入式代碼的排版問題

CHANBAEK ? 來源:南山府嵌入式 ? 作者:南山府嵌入式 ? 2023-04-15 15:01 ? 次閱讀

簡(jiǎn)介:

對(duì)于代碼的規(guī)范性不管是做純軟件開發(fā)的還是做嵌入式開發(fā)的或者使用各種語言的,都是非常重要的。 代碼的規(guī)范性對(duì)編寫人員對(duì)代碼后期的維護(hù)以及其他開發(fā)人員閱讀等都是非常友好的。 接下來我們會(huì)對(duì)代碼的規(guī)范性進(jìn)行說明(當(dāng)然,根據(jù)個(gè)人的情況和企業(yè)的不同可能要求不一樣,我就根據(jù)我個(gè)人的一個(gè)情況進(jìn)行一些說明,本專題不作為最終范本,僅用來作為參考)

排版問題

本篇就說說代碼的排版問題,這東西就像家里裝修一樣,好的裝修會(huì)讓人心里很舒服,同樣代碼也是如此,一個(gè)好的代碼排版也會(huì)給別人帶來一個(gè)好的感覺。

程序的縮進(jìn)

代碼盡量采用縮進(jìn)風(fēng)格(特別是程序塊)縮進(jìn)空格為4個(gè)

對(duì)待嗎的有關(guān)結(jié)構(gòu)、函數(shù)、分支、循環(huán)、以及枚舉等復(fù)雜或較為復(fù)雜的程序結(jié)構(gòu)在進(jìn)行編寫的時(shí)候,要將它的內(nèi)容縮進(jìn) 一層。

比如大括號(hào)({}):大括號(hào)是一個(gè)非常明顯的標(biāo)志,凡是遇到大括號(hào),都應(yīng)該直接聯(lián)想到縮進(jìn)。

分支結(jié)構(gòu): 包括 if… else 結(jié)構(gòu)、switch 結(jié)構(gòu)等

循環(huán)結(jié)構(gòu):包括 for 結(jié)構(gòu)、while/do… while 結(jié)構(gòu)等

以上這些都需要進(jìn)行縮進(jìn)。

下面舉個(gè)例子:

if語句

1if (a > b)
 2{
 3  /*if 子句的結(jié)構(gòu)體內(nèi)容應(yīng)縮進(jìn)*/
 4  max = a;
 5  min = b;
 6}
 7else
 8{
 9  /*else子句的結(jié)構(gòu)體內(nèi)容應(yīng)縮進(jìn)*/
10  max = b;
11  min = a;
12}

開關(guān)

1  switch (expression)
 2  {
 3    /*switch結(jié)構(gòu)的內(nèi)層縮進(jìn)(也包括內(nèi)容)*/
 4    case 0:
 5      break;
 6    case 1:
 7      /*case的內(nèi)層(內(nèi)容)也要縮進(jìn)*/
 8      break;
 9    default:
10      break;
11  }

for語句

1for (size_t i = 0; i < count; i++)
2{
3  /*for循環(huán)縮進(jìn)*/
4  data[i + 1] = data[i];
5}

while語句

1while (i != 0)
2{
3  /* 內(nèi)容縮進(jìn) */
4  tx = yx;
5  x++;
6}

函數(shù)

1void RCC_Configuration(void)
 2{
 3  /* Enable GPIO clock */
 4  RCC_APB2PeriphClockCmd(USARTy_GPIO_CLK | USARTz_GPIO_CLK | RCC_APB2Periph_AFIO, ENABLE);
 5
 6#ifndef USE_STM3210C_EVAL
 7  /* Enable USARTy Clock */
 8  RCC_APB2PeriphClockCmd(USARTy_CLK, ENABLE);
 9#else
10  /* Enable USARTy Clock */
11  RCC_APB1PeriphClockCmd(USARTy_CLK, ENABLE);
12#endif
13  /* Enable USARTz Clock */
14  RCC_APB1PeriphClockCmd(USARTz_CLK, ENABLE);
15}

這里就不一一列舉了,總之代碼縮進(jìn)空格數(shù)4。

代碼語句過長(zhǎng)要變短

如果代碼語句過長(zhǎng)要多行書寫(比如>100個(gè)字符這樣)

如果代碼語句過長(zhǎng)或者較長(zhǎng)(比如:>100字符)要進(jìn)行多行編寫,對(duì)于長(zhǎng)的表達(dá)式,要在操作符處進(jìn)行換行,操作符盡可能的放在新的一行首位,同時(shí)要對(duì)新行進(jìn)行適當(dāng)?shù)目s進(jìn),使代碼排列整齊,整體美觀可讀性好。

舉例

1int example(void)
2{
3  int my_Value=1;
4  /*這是一個(gè)很長(zhǎng)的語句,所以我們來進(jìn)行新行,從第二行開始進(jìn)行一個(gè)縮進(jìn)*/
5  my_Value=my_Value+my_Value1+my_Value2+my_Value3+my_Value5+my_Value
6           +my_Value8+my_Value9+my_Value10;
7  /*后面的就是恢復(fù)正常的縮進(jìn)位置*/
8  my_Value = 100;
9}

對(duì)于循環(huán)、判斷等語句中若有較長(zhǎng)的表達(dá)式或語句,同樣要進(jìn)行適當(dāng)?shù)恼Z句劃分,同樣換新行,在新行中表達(dá)式操作符要放在首位,然后進(jìn)行縮進(jìn)。

舉例

1int example(void)
2{
3  if ((expression < USART_GetFlagStatus(USARTz, USART_FLAG_RXNE))
4      && (USART_GetFlagStatus(USARTz, USART_FLAG_RXNE)))
5  {
6    ... /* code*/
7  }
8}

同樣對(duì)于函數(shù)參數(shù)也是一樣的,都要進(jìn)行適當(dāng)?shù)倪M(jìn)行新行,同時(shí)也要適當(dāng)?shù)倪M(jìn)行縮進(jìn),讓代碼整齊,是可讀性不受干擾。

舉例

1void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct,
2              RCC_APB2PeriphResetCmd* GPIO_InitStruc)
3

當(dāng)有多個(gè)短語句的時(shí)候

不要把多個(gè)短語句寫入到一行中

也就是說,不管一條語句有多短,都要一行只能寫一條短語句。

多個(gè)短語句寫一行并沒有錯(cuò),但是會(huì)讓人很自動(dòng)的認(rèn)為那只有一條語句,因此應(yīng)該是多個(gè)語句多行書寫。

例如:

舉例

1int example(void)
2{
3  /*這是不規(guī)范的*/
4  led.b = 0;  led.aa = 0;
5  /*應(yīng)該寫成下面這樣*/
6  led.b = 0;
7  led.aa = 0;
8}

對(duì)分支語句、循環(huán)語句中{}的來說

if、for、do、while、case、switch、 default等所有的語句都要自占一行,并且if、for、do、while、if--else等語句的執(zhí)行語句部分無論多少都要加括號(hào){},同時(shí)大括號(hào){},都要獨(dú)占一行。

舉例

1int example(void)
 2{
 3  /*下面就是不規(guī)范的*/
 4  if (i == 0)
 5    a = b;
 6  else
 7    b = e;
 8
 9  /*正確的寫法*/
10  if (i == 0)
11  {
12    a = b;
13  }
14  else
15  {
16    b = e;
17  }
18}
1int example(void)
 2{
 3  /*下面是不規(guī)范的*/
 4  for (...){
 5    ... /* program code */
 6  }
 7  /*下面是規(guī)范的*/
 8  for ()
 9  {
10    /* code */
11  }
12}

這里推薦大家寫代碼的時(shí)候使用VScode或者其他具有自動(dòng)縮進(jìn)方式的IDE。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5045

    文章

    18816

    瀏覽量

    298465
  • Switch
    +關(guān)注

    關(guān)注

    1

    文章

    532

    瀏覽量

    57927
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4235

    瀏覽量

    61965
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4670

    瀏覽量

    67764
  • 程序結(jié)構(gòu)
    +關(guān)注

    關(guān)注

    1

    文章

    7

    瀏覽量

    6909
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    嵌入式系統(tǒng)接口應(yīng)用

    嵌入式系統(tǒng)原理與接口技術(shù)》——嵌入式系統(tǒng)接口應(yīng)用基礎(chǔ)本文為我負(fù)責(zé)編寫的電子工業(yè)出版社出版的《嵌入式系統(tǒng)原理與接口技術(shù)》一書第七章部分,這里整理的仍然是修改稿,供需要的同學(xué)參考,本書為普通高等教育
    發(fā)表于 08-09 06:56

    如何調(diào)試嵌入式代碼

    我們?cè)谶M(jìn)行嵌入式系統(tǒng)開發(fā)調(diào)試時(shí),受限于嵌入式芯片資源和性能,一般采用遠(yuǎn)程調(diào)試。在調(diào)試嵌入式底層代碼時(shí),gdbserver 無法運(yùn)行,我們?cè)撛趺凑{(diào)試底層
    發(fā)表于 12-17 06:32

    Caché嵌入式代碼分享

    文章目錄第十章 Caché 嵌入式代碼嵌入式HTML`&html`標(biāo)記語法嵌入式JavaScript嵌入式SQL第十章 Caché
    發(fā)表于 12-17 07:19

    嵌入式系統(tǒng)原理、設(shè)計(jì)與應(yīng)用

    嵌入式操作系統(tǒng)的原理和開發(fā)方法,而是講述嵌入式系統(tǒng)的通用技術(shù)和基本原理、嵌入式產(chǎn)品的開發(fā)方法等內(nèi)容。例如書中的給出的代碼屬于類C語言代碼,
    發(fā)表于 04-25 17:07 ?2次下載

    EDK9.1嵌入式開發(fā)實(shí)驗(yàn)代碼

    Xilinx FPGA工程例子源碼:EDK9.1嵌入式開發(fā)實(shí)驗(yàn)代碼
    發(fā)表于 06-07 14:13 ?2次下載

    嵌入式代碼之編寫規(guī)范

    嵌入式代碼編碼規(guī)范,用于規(guī)范自己的代碼,增強(qiáng)可讀性,非標(biāo)準(zhǔn)規(guī)范。最好能強(qiáng)制自己形成良好的編碼風(fēng)格,有利于開發(fā)
    的頭像 發(fā)表于 04-26 15:21 ?5152次閱讀

    盤點(diǎn)幾種主流嵌入式架構(gòu)的代碼壓縮技術(shù)

    對(duì)于嵌入式軟件而言,代碼尺寸是越小越好。壓縮代碼以適應(yīng)受到成本或空間限制的存儲(chǔ)子系統(tǒng)已經(jīng)成為嵌入式系統(tǒng)開發(fā)的一項(xiàng)重要事務(wù)。
    的頭像 發(fā)表于 05-27 15:37 ?4398次閱讀

    如何將嵌入式代碼優(yōu)化

    嵌入式代碼優(yōu)化,除了最基本的函數(shù)實(shí)現(xiàn)細(xì)節(jié)算法優(yōu)化外,還有一些細(xì)節(jié)的處理。
    發(fā)表于 09-25 09:34 ?1311次閱讀

    關(guān)于嵌入式代碼的致命漏洞

    隨著互聯(lián)網(wǎng)的發(fā)展,嵌入式設(shè)備正分布在一個(gè)充滿可以被攻擊者利用的源代碼級(jí)安全漏洞的環(huán)境中。因此,嵌入式軟件開發(fā)人員應(yīng)該了解不同類型的安全漏洞——特別是代碼注入。 術(shù)語“
    的頭像 發(fā)表于 01-06 15:13 ?1734次閱讀

    嵌入式代碼的致命安全漏洞

    隨著互聯(lián)網(wǎng)的發(fā)展,嵌入式設(shè)備正分布在一個(gè)充滿可以被攻擊者利用的源代碼級(jí)安全漏洞的環(huán)境中。因此,嵌入式軟件開發(fā)人員應(yīng)該了解不同類型的安全漏洞——特別是代碼注入。 術(shù)語“
    的頭像 發(fā)表于 01-15 15:07 ?2121次閱讀

    嵌入式外中斷c語言代碼

    嵌入式外中斷c語言代碼(arm嵌入式開發(fā)實(shí)例)-嵌入式外中斷c語言代碼,有需要的可以參考!
    發(fā)表于 07-30 11:29 ?4次下載
    <b class='flag-5'>嵌入式</b>外中斷c語言<b class='flag-5'>代碼</b>

    嵌入式框架-分層

    嵌入式架構(gòu)有多重要?要做到嵌入式應(yīng)用的代碼邏輯清晰,且避免重復(fù)的造輪子,沒有好的應(yīng)用架構(gòu)怎么行?如果沒有好的架構(gòu),移植將會(huì)是一件很痛苦的事情。如果沒有好的架構(gòu),復(fù)用是最大的難題,沒法更大限度的復(fù)用
    發(fā)表于 10-20 16:06 ?24次下載
    <b class='flag-5'>嵌入式</b>框架-分層

    初識(shí)ARM嵌入式系統(tǒng)

    ARM嵌入式系統(tǒng)的基本結(jié)構(gòu)和常見的ARM微處理器ARM被稱為嵌入式微處理器核。ARM嵌入式系統(tǒng)由3部分組成,即嵌入式系統(tǒng)硬件平臺(tái),嵌入式操作
    發(fā)表于 10-21 12:51 ?16次下載
    初識(shí)ARM<b class='flag-5'>嵌入式</b>系統(tǒng)

    嵌入式開發(fā)蜂鳴器代碼

    嵌入式開發(fā)蜂鳴器代碼
    發(fā)表于 03-29 17:04 ?3次下載

    嵌入式代碼高效運(yùn)行指南

    嵌入式C語言之所以經(jīng)久不衰,在于它的運(yùn)行效率很高,想要高效運(yùn)行代碼,除了編譯器幫忙優(yōu)化,關(guān)鍵還要靠自己“優(yōu)化”代碼。
    的頭像 發(fā)表于 01-06 15:32 ?771次閱讀