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。

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

    关注

    5082

    文章

    19104

    浏览量

    304810
  • Switch
    +关注

    关注

    1

    文章

    533

    浏览量

    58221
  • 函数
    +关注

    关注

    3

    文章

    4327

    浏览量

    62571
  • 代码
    +关注

    关注

    30

    文章

    4779

    浏览量

    68524
  • 程序结构
    +关注

    关注

    1

    文章

    7

    浏览量

    6924
收藏 人收藏

    评论

    相关推荐

    嵌入式系统接口应用

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

    如何调试嵌入式代码

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

    Caché嵌入式代码分享

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

    嵌入式系统原理、设计与应用

    嵌入式操作系统的原理和开发方法,而是讲述嵌入式系统的通用技术和基本原理、嵌入式产品的开发方法等内容。例如书中的给出的代码属于类C语言代码
    发表于 04-25 17:07 2次下载

    EDK9.1嵌入式开发实验代码

    Xilinx FPGA工程例子源码:EDK9.1嵌入式开发实验代码
    发表于 06-07 14:13 2次下载

    嵌入式代码之编写规范

    嵌入式代码编码规范,用于规范自己的代码,增强可读性,非标准规范。最好能强制自己形成良好的编码风格,有利于开发
    的头像 发表于 04-26 15:21 5273次阅读

    盘点几种主流嵌入式架构的代码压缩技术

    对于嵌入式软件而言,代码尺寸是越小越好。压缩代码以适应受到成本或空间限制的存储子系统已经成为嵌入式系统开发的一项重要事务。
    的头像 发表于 05-27 15:37 4523次阅读

    如何将嵌入式代码优化

    嵌入式代码优化,除了最基本的函数实现细节算法优化外,还有一些细节的处理。
    发表于 09-25 09:34 1391次阅读

    关于嵌入式代码的致命漏洞

    随着互联网的发展,嵌入式设备正分布在一个充满可以被攻击者利用的源代码级安全漏洞的环境中。因此,嵌入式软件开发人员应该了解不同类型的安全漏洞——特别是代码注入。 术语“
    的头像 发表于 01-06 15:13 1794次阅读

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

    随着互联网的发展,嵌入式设备正分布在一个充满可以被攻击者利用的源代码级安全漏洞的环境中。因此,嵌入式软件开发人员应该了解不同类型的安全漏洞——特别是代码注入。 术语“
    的头像 发表于 01-15 15:07 2196次阅读

    嵌入式外中断c语言代码

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

    嵌入式框架-分层

    嵌入式架构有多重要?要做到嵌入式应用的代码逻辑清晰,且避免重复的造轮子,没有好的应用架构怎么行?如果没有好的架构,移植将会是一件很痛苦的事情。如果没有好的架构,复用是最大的难题,没法更大限度的复用
    发表于 10-20 16:06 24次下载
    <b class='flag-5'>嵌入式</b>框架-分层

    初识ARM嵌入式系统

    ARM嵌入式系统的基本结构和常见的ARM微处理器ARM被称为嵌入式微处理器核。ARM嵌入式系统由3部分组成,即嵌入式系统硬件平台,嵌入式操作
    发表于 10-21 12:51 16次下载
    初识ARM<b class='flag-5'>嵌入式</b>系统

    嵌入式开发蜂鸣器代码

    嵌入式开发蜂鸣器代码
    发表于 03-29 17:04 3次下载

    嵌入式代码高效运行指南

    嵌入式C语言之所以经久不衰,在于它的运行效率很高,想要高效运行代码,除了编译器帮忙优化,关键还要靠自己“优化”代码
    的头像 发表于 01-06 15:32 881次阅读