簡介:
對于代碼的規范性不管是做純軟件開發的還是做嵌入式開發的或者使用各種語言的,都是非常重要的。 代碼的規范性對編寫人員對代碼后期的維護以及其他開發人員閱讀等都是非常友好的。 接下來我們會對代碼的規范性進行說明(當然,根據個人的情況和企業的不同可能要求不一樣,我就根據我個人的一個情況進行一些說明,本專題不作為最終范本,僅用來作為參考)
排版問題
本篇就說說代碼的排版問題,這東西就像家里裝修一樣,好的裝修會讓人心里很舒服,同樣代碼也是如此,一個好的代碼排版也會給別人帶來一個好的感覺。
程序的縮進
代碼盡量采用縮進風格(特別是程序塊)縮進空格為4個
對待嗎的有關結構、函數、分支、循環、以及枚舉等復雜或較為復雜的程序結構在進行編寫的時候,要將它的內容縮進 一層。
比如大括號({}):大括號是一個非常明顯的標志,凡是遇到大括號,都應該直接聯想到縮進。
分支結構: 包括 if… else 結構、switch 結構等
循環結構:包括 for 結構、while/do… while 結構等
以上這些都需要進行縮進。
下面舉個例子:
if語句
1if (a > b)
2{
3 /*if 子句的結構體內容應縮進*/
4 max = a;
5 min = b;
6}
7else
8{
9 /*else子句的結構體內容應縮進*/
10 max = b;
11 min = a;
12}
開關
1 switch (expression)
2 {
3 /*switch結構的內層縮進(也包括內容)*/
4 case 0:
5 break;
6 case 1:
7 /*case的內層(內容)也要縮進*/
8 break;
9 default:
10 break;
11 }
for語句
1for (size_t i = 0; i < count; i++)
2{
3 /*for循環縮進*/
4 data[i + 1] = data[i];
5}
while語句
1while (i != 0)
2{
3 /* 內容縮進 */
4 tx = yx;
5 x++;
6}
函數
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}
這里就不一一列舉了,總之代碼縮進空格數4。
代碼語句過長要變短
如果代碼語句過長要多行書寫(比如>100個字符這樣)
如果代碼語句過長或者較長(比如:>100字符)要進行多行編寫,對于長的表達式,要在操作符處進行換行,操作符盡可能的放在新的一行首位,同時要對新行進行適當的縮進,使代碼排列整齊,整體美觀可讀性好。
舉例
1int example(void)
2{
3 int my_Value=1;
4 /*這是一個很長的語句,所以我們來進行新行,從第二行開始進行一個縮進*/
5 my_Value=my_Value+my_Value1+my_Value2+my_Value3+my_Value5+my_Value
6 +my_Value8+my_Value9+my_Value10;
7 /*后面的就是恢復正常的縮進位置*/
8 my_Value = 100;
9}
對于循環、判斷等語句中若有較長的表達式或語句,同樣要進行適當的語句劃分,同樣換新行,在新行中表達式操作符要放在首位,然后進行縮進。
舉例
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}
同樣對于函數參數也是一樣的,都要進行適當的進行新行,同時也要適當的進行縮進,讓代碼整齊,是可讀性不受干擾。
舉例
1void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct,
2 RCC_APB2PeriphResetCmd* GPIO_InitStruc)
3
當有多個短語句的時候
不要把多個短語句寫入到一行中
也就是說,不管一條語句有多短,都要一行只能寫一條短語句。
多個短語句寫一行并沒有錯,但是會讓人很自動的認為那只有一條語句,因此應該是多個語句多行書寫。
例如:
舉例
1int example(void)
2{
3 /*這是不規范的*/
4 led.b = 0; led.aa = 0;
5 /*應該寫成下面這樣*/
6 led.b = 0;
7 led.aa = 0;
8}
對分支語句、循環語句中{}的來說
if、for、do、while、case、switch、 default等所有的語句都要自占一行,并且if、for、do、while、if--else等語句的執行語句部分無論多少都要加括號{},同時大括號{},都要獨占一行。
舉例
1int example(void)
2{
3 /*下面就是不規范的*/
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 /*下面是不規范的*/
4 for (...){
5 ... /* program code */
6 }
7 /*下面是規范的*/
8 for ()
9 {
10 /* code */
11 }
12}
這里推薦大家寫代碼的時候使用VScode或者其他具有自動縮進方式的IDE。
-
嵌入式
+關注
關注
5086文章
19143瀏覽量
306044 -
Switch
+關注
關注
1文章
533瀏覽量
58289 -
函數
+關注
關注
3文章
4338瀏覽量
62734 -
代碼
+關注
關注
30文章
4798瀏覽量
68728 -
程序結構
+關注
關注
1文章
7瀏覽量
6936
發布評論請先 登錄
相關推薦
評論