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

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

3天内不再提示

关于怎么代码对齐的话题

黄工的嵌入式威廉希尔官方网站 圈 来源:黄工的嵌入式威廉希尔官方网站 圈 2020-03-20 14:00 次阅读

写在前面 Ⅰ

写作本文的想法来源于:最近移植以前工程师代码,打开工程一看,代码“凌乱”了······

原因在于代码对齐的方式“错综复杂”····

你们代码对齐的方式是Tab?还是空格? 使用空格又是几个空格?

关于代码对齐 Ⅱ

代码对齐主要牵涉到的就是使用Tab还是空格,以及空几格对齐。下面简单讲述一下相关的知识。

1.Tab和空格的配置

Keil:Edit -> Configuration -> Editor

IAR:Tools -> Options -> Editor

2.Tab和空格的区别

Tab和空格其实只是两个不同的符号,但在编程对齐中的意义却大不一样。一个Tab可以占空个格的位置,但一个空格就只有一个空格的位置。

在Keil开发环境中可以显示出Tab和空格符,不妨看一下在Tab和空格交替编辑下,原本使用占2空格Tab符号,实际在4隔空Tab下看代码(和注释)就凌乱了。

离谱的代码中就会看见使用占3个空格的Tab,以上截图举例都还好,没有使用占用3个空格的Tab。

代码前面的对齐都还好处理,很多工具都可以自动排版,像IAR,只要选中需要对齐的代码,Ctrl + T就可以了。但代码后面的注释对齐就不是那么好处理了,如果使用Tab + 空格混合方式,更是容易混乱。

关于Tab和空格的调查 Ⅲ

有人针对 GitHub 上多种语言的热门项目(star 数量高的),分析了代码对齐使用Tab和空格,以及空几格的使用情况。

1.C语言

A.32.08% 用 Tab

B.35.31% 用 4 个空格

C.26.15% 用 2 个

D.4.31% 用 3 个

E.2.16% 用 8 个

2.C++

A.20.56% 用 Tab

B.39.11% 用 4 个空格

C.38.71% 用 2 个

D.1.61% 用 3 个

3.Java

A.11.6% 用 Tab

B.23.21% 用 2 个空格

C.65.19% 用 4 个

4.JavaScript

A.13.25% 用 Tab

B.59.94% 用 2 个空格

C.26.81% 用 4 个

5.PHP

A.28.68% 用 Tab

B.6.12% 用 2 个空格

C.65.2% 用 4 个

6.Ruby

A.0% 用 Tab

B.100% 用 2 个空格

C.0% 用 4 个

总结 Ⅳ

关于代码对齐,代码编辑器既然支持Tab,也支持使用空格,所以个人觉得两种方式都可以,只看个人习惯使用那一个了。

代码对齐其实很好处理,选择可以自动对齐的工具对齐就OK了,但在代码后面的注释就不是那么容易对齐了(特别在Tab和空格混用情况下),我个人习惯在代码后面把注释也对齐,所以基本不用Tab符。

个人建议:对齐使用空格符,占2空格或4空格(常用)。其优势:1.方便跨平台使用; 2.对齐注释。

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

    关注

    68

    文章

    1212

    浏览量

    166851
  • 代码
    +关注

    关注

    30

    文章

    4780

    浏览量

    68539
  • 代码编辑器
    +关注

    关注

    0

    文章

    14

    浏览量

    6027
收藏 人收藏

    评论

    相关推荐

    KiCad的对齐工具不好用?

    “  不存在的。唯一的原因是您还没有学会怎么用。   ” 对齐命令在哪里? KiCad的对齐命令(Align)藏得比较隐蔽,既不在菜单栏,也不在工具栏。右键的菜单中默认也不存在。只有当您 选中两个或
    的头像 发表于 12-04 18:15 137次阅读
    KiCad的<b class='flag-5'>对齐</b>工具不好用?

    ARM嵌入式系统中内存对齐的重要性

    做嵌入式系统软件开发,经常在代码中看到各种各样的对齐,很多时候我们都是知其然不知其所以然,知道要做好各种对齐,但是不明白为什么要对齐,不对齐
    的头像 发表于 11-11 17:17 817次阅读
    ARM嵌入式系统中内存<b class='flag-5'>对齐</b>的重要性

    I2S有左对齐,右对齐跟标准的I2S三种格式,那么这三种格式各有什么优点呢?

    大家好,关于I2S格式,有两个疑问请教一下 我们知道I2S有左对齐,右对齐跟标准的I2S三种格式,那么这三种格式各有什么优点呢? 而且对于标准的I2S格式,32FS传输16bit的数据,48fs传输24bit的数据,最低位会移
    发表于 10-21 08:23

    三相三电平逆变器的中心对齐SVPWM实现

    电子发烧友网站提供《三相三电平逆变器的中心对齐SVPWM实现.pdf》资料免费下载
    发表于 10-12 11:25 0次下载
    三相三电平逆变器的中心<b class='flag-5'>对齐</b>SVPWM实现

    OpenAI超级对齐团队解散

    近日,OpenAI的安全主管、“超级智能对齐团队”负责人Jan Leike宣布离职。据悉,Jan Leike与OpenAI高层在公司的核心优先事项上存在长期且难以调和的分歧。
    的头像 发表于 05-20 10:16 436次阅读

    鸿蒙ArkUI开发:【弹性布局(主轴&amp;交叉轴对齐方式)】

    通过justifyContent参数设置在主轴方向的对齐方式,和Row、Column的主轴对齐方式行为一样
    的头像 发表于 05-14 15:33 706次阅读
    鸿蒙ArkUI开发:【弹性布局(主轴&amp;交叉轴<b class='flag-5'>对齐</b>方式)】

    HarmonyOS开发ArkUI案例:【常用布局容器对齐方式】

    基于ArkTS扩展的声明式开发范式,实现Flex、Column、Row和Stack四种常用布局容器对齐方式。
    的头像 发表于 05-08 16:47 1582次阅读
    HarmonyOS开发ArkUI案例:【常用布局容器<b class='flag-5'>对齐</b>方式】

    聊聊一个关于TIMER事件触发中断的响应话题

    情况是这样的,现在使用STM32G4系列的TIM8,工作在中心对齐计数,单脉冲PWM模式,使用内部系统时钟做时钟源,计数时不做分频,即PSC=0。CH1做PWM输出。
    的头像 发表于 04-28 09:44 534次阅读
    聊聊一个<b class='flag-5'>关于</b>TIMER事件触发中断的响应<b class='flag-5'>话题</b>

    关于MOS管电路工作原理的讲解

    MOS管的话题虽说是老生常谈,但这份资料几年前就有人给我分享过,这是网上评价非常高的一篇关于MOS管电路工作原理的讲解,从管脚的识别,到极性的分辨,再到常用功能,应用电路等等
    发表于 04-22 12:26 515次阅读
    <b class='flag-5'>关于</b>MOS管电路工作原理的讲解

    求助,关于STM32H7的Cache无效化操作32字节对齐问题求解

    core_cm7.h更新到5.1.1版本后,发现该函数对dsize做了32字节对齐,但是op_addr地址32字节对齐却注释掉了?,图片的这句话是不是说SCB-&gt
    发表于 03-29 06:51

    关于STM32 DMAMUX模块具体的应用示例代码

    有人通过公众号微信留言,询问是否有关于STM32 DMAMUX模块具体的应用示例代码。同时,个人也发现,虽然STM32片内的DMAMUX不是什么新模块,似乎还是很多人并不太熟悉。这里借机聊聊这方面的内容,重点演示相关功能的实现,以供参考。
    的头像 发表于 03-25 09:15 2423次阅读
    <b class='flag-5'>关于</b>STM32 DMAMUX模块具体的应用示例<b class='flag-5'>代码</b>

    计数器的位如何与SRC字段的42-32位对齐

    也是恒定的。 这是正确的吗? 我知道 SRC 在一些重要性更高的位中包含帧计数器,但这似乎相当简单,因为它只计算通过 FX3 的完整帧数。 关于计数器,我唯一的问题是我的计数器的位如何与 SRC 字段的 42-32 位对齐
    发表于 02-27 08:30

    请问PWM波输出方式中的边沿对齐与中心对齐有什么区别呢?

    请问PWM波输出方式中的边沿对齐与中心对齐有什么区别呢?对于PMSM FOC应该使用那种对齐方式呢?为什么呢?
    发表于 02-05 06:06

    keil arm工程中结构体1字节对齐如何实现

    在Keil Arm工程中,结构体的对齐方式可以通过使用特定的编译器指令或者关键字来实现。结构体的对齐方式会直接影响结构体变量在内存中的布局和对齐边界,从而对程序的性能和存储空间占用产生影响。 结构体
    的头像 发表于 01-05 14:40 3759次阅读

    OneLLM:对齐所有模态的框架!

    OneLLM 是第一个在单个模型中集成八种不同模态的MLLM。通过统一的框架和渐进式多模态对齐pipelines,可以很容易地扩展OneLLM以包含更多数据模式。
    的头像 发表于 01-04 11:27 974次阅读
    OneLLM:<b class='flag-5'>对齐</b>所有模态的框架!