簡(jiǎn)介:
對(duì)于代碼的規(guī)范性不管是做純軟件開發(fā)的還是做嵌入式開發(fā)的或者使用各種語(yǔ)言的,都是非常重要的。 代碼的規(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語(yǔ)句
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語(yǔ)句
1for (size_t i = 0; i < count; i++)
2{
3 /*for循環(huán)縮進(jìn)*/
4 data[i + 1] = data[i];
5}
while語(yǔ)句
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。
代碼語(yǔ)句過長(zhǎng)要變短
如果代碼語(yǔ)句過長(zhǎng)要多行書寫(比如>100個(gè)字符這樣)
如果代碼語(yǔ)句過長(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)的語(yǔ)句,所以我們來進(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)、判斷等語(yǔ)句中若有較長(zhǎng)的表達(dá)式或語(yǔ)句,同樣要進(jìn)行適當(dāng)?shù)恼Z(yǔ)句劃分,同樣換新行,在新行中表達(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è)短語(yǔ)句的時(shí)候
不要把多個(gè)短語(yǔ)句寫入到一行中
也就是說,不管一條語(yǔ)句有多短,都要一行只能寫一條短語(yǔ)句。
多個(gè)短語(yǔ)句寫一行并沒有錯(cuò),但是會(huì)讓人很自動(dòng)的認(rèn)為那只有一條語(yǔ)句,因此應(yīng)該是多個(gè)語(yǔ)句多行書寫。
例如:
舉例
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ì)分支語(yǔ)句、循環(huán)語(yǔ)句中{}的來說
if、for、do、while、case、switch、 default等所有的語(yǔ)句都要自占一行,并且if、for、do、while、if--else等語(yǔ)句的執(zhí)行語(yǔ)句部分無論多少都要加括號(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。
-
嵌入式
+關(guān)注
關(guān)注
5096文章
19189瀏覽量
308031 -
Switch
+關(guān)注
關(guān)注
1文章
533瀏覽量
58501 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4346瀏覽量
63023 -
代碼
+關(guān)注
關(guān)注
30文章
4837瀏覽量
69129 -
程序結(jié)構(gòu)
+關(guān)注
關(guān)注
1文章
7瀏覽量
6948
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
如何提高嵌入式代碼質(zhì)量?
嵌入式系統(tǒng)接口應(yīng)用
如何調(diào)試嵌入式代碼?
Caché嵌入式代碼分享
嵌入式系統(tǒng)原理、設(shè)計(jì)與應(yīng)用
EDK9.1嵌入式開發(fā)實(shí)驗(yàn)代碼
嵌入式代碼之編寫規(guī)范
盤點(diǎn)幾種主流嵌入式架構(gòu)的代碼壓縮技術(shù)
如何將嵌入式的代碼優(yōu)化
關(guān)于嵌入式代碼的致命漏洞
嵌入式代碼的致命安全漏洞
嵌入式外中斷c語(yǔ)言代碼
![<b class='flag-5'>嵌入式</b>外中斷c語(yǔ)言<b class='flag-5'>代碼</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
嵌入式框架-分層
![<b class='flag-5'>嵌入式</b>框架-分層](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論