0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式代码的排版问题

CHANBAEK 来源:南山府嵌入式 作者:南山府嵌入式 2023-04-15 15:01 次阅读

简介:

对于代码的规范性不管是做纯软件开发的还是做嵌入式开发的或者使用各种语言的,都是非常重要的。 代码的规范性对编写人员对代码后期的维护以及其他开发人员阅读等都是非常友好的。 接下来我们会对代码的规范性进行说明(当然,根据个人的情况和企业的不同可能要求不一样,我就根据我个人的一个情况进行一些说明,本专题不作为最终范本,仅用来作为参考)

排版问题

本篇就说说代码的排版问题,这东西就像家里装修一样,好的装修会让人心里很舒服,同样代码也是如此,一个好的代码排版也会给别人带来一个好的感觉。

程序的缩进

代码尽量采用缩进风格(特别是程序块)缩进空格为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。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    4983

    文章

    18286

    浏览量

    288516
  • Switch
    +关注

    关注

    1

    文章

    515

    浏览量

    57553
  • 函数
    +关注

    关注

    3

    文章

    3882

    浏览量

    61310
  • 代码
    +关注

    关注

    30

    文章

    4556

    浏览量

    66800
  • 程序结构
    +关注

    关注

    1

    文章

    6

    浏览量

    6897
收藏 人收藏

    评论

    相关推荐

    嵌入式代码规范

    嵌入式代码规范,自我认为很好,共享给大家
    发表于 06-26 13:45

    基于模型设计自动生成的嵌入式代码

    各位前辈,有没有使用过matlab自动生成C代码嵌入式到ARM处理器,最近一段时间研究这个,但是好多问题没解决掉,求交流。
    发表于 11-21 13:27

    几种嵌入式软件代码压缩技术的比较分析

    对于嵌入式软件而言,代码尺寸是越小越好。压缩代码以适应受到成本或空间限制的存储子系统已经成为嵌入式系统开发的一项重要事务。ARM、MIPS、IBM以及ARC都提供了降低存储器占用的技术
    发表于 05-16 10:44

    嵌入式软件代码保护系统是由什么构成的?

    嵌入式产品由于其独特的稳定性、低廉的成本优势以及优良的可移植性, 已经在互联网、科学研究、军事技术、工业控制、通讯以及人们的日常生活中得到了广泛的应用。在嵌入式系统中, 如何保护核心的嵌入式软件
    发表于 08-15 07:59

    如何去编写嵌入式系统的程序代码

    嵌入式系统的基本架构是由哪几部分组成的?如何去编写嵌入式系统的程序代码
    发表于 07-30 06:32

    嵌入式系统接口应用

    嵌入式系统原理与接口技术》——嵌入式系统接口应用基础本文为我负责编写的电子工业出版社出版的《嵌入式系统原理与接口技术》一书第七章部分,这里整理的仍然是修改稿,供需要的同学参考,本书为普通高等教育
    发表于 08-09 06:56

    基于MBD的嵌入式系统设计

    【STM32F407+matlab+STM32CubeMX】基于MBD的嵌入式系统实现基于STM32CubeMX和HAL的嵌入式系统编程通过图形化配置和自动生成初始化C代码的方式,大大降低了
    发表于 08-17 07:08

    WIFI网卡如何在嵌入式Linux中

    仅用于增加百度收录权重,排版未优化,日常不维护。请访问: 查看、评论。本博文对应地址: 嵌入式Linux——WIFI网卡/#more如何在嵌入式Linux中,使用WIFI无线网卡。嵌入式
    发表于 11-04 08:26

    MATLAB/SIMULINK生成嵌入式代码有哪些步骤

    昨天参加了Mathworks公司在东南大学举办的关于MATLAB的培训,内容是关于MATLAB/SIMULINK的嵌入式代码生成以及物理建模,在这里把代码生成的步骤及一些相关内容总结一下。嵌入
    发表于 12-16 07:16

    嵌入式代码可能存在的致命漏洞是什么

    关注+星标公众号,不错过精彩内容来源 |电子伊甸园微信公众号|嵌入式专栏随着互联网的发展,嵌入式设备正分布在一个充满可以被攻击者利用的源代码级安全漏洞的环境中。因此,嵌入式软件开发..
    发表于 12-17 07:59

    如何调试嵌入式代码

    我们在进行嵌入式系统开发调试时,受限于嵌入式芯片资源和性能,一般采用远程调试。在调试嵌入式底层代码时,gdbserver 无法运行,我们该怎么调试底层
    发表于 12-17 06:32

    编写嵌入式软件代码技巧有哪些

    代码维护是应用程序开发的重要方面,而为了缩短上市时间,通常会忽略代码维护。对于某些应用程序,这可能不会造成重大问题,因为这些应用程序的寿命很短,或者已部署该应用程序,并且再也不会碰它。但是,嵌入式
    发表于 12-17 07:14

    Caché嵌入式代码分享

    文章目录第十章 Caché 嵌入式代码嵌入式HTML`&html`标记语法嵌入式JavaScript嵌入式SQL第十章 Caché
    发表于 12-17 07:19

    如何去实现嵌入式LINUX驱动的软件代码

    如何对嵌入式LINUX驱动的硬件信息进行配置呢?如何去实现嵌入式LINUX驱动的软件代码呢?
    发表于 12-24 07:31

    嵌入式外中断c语言代码

    嵌入式外中断c语言代码(arm嵌入式开发实例)-嵌入式外中断c语言代码,有需要的可以参考!
    发表于 07-30 11:29 4次下载
    <b class='flag-5'>嵌入式</b>外中断c语言<b class='flag-5'>代码</b>