zoukankan      html  css  js  c++  java
  • 缩进与对齐——正确地使用Tab和空格

    写代码时大家都会使用缩进(indentation)和对齐(alignment),这是两个相关而又不同的概念,两者都是为了提高代码的可读性。缩进出现在一行的最左边,目的是明显地区分开包含与被包含的代码;对齐则是为了使代码美观、整洁。

    下例中,类的两个成员变量相对于类名来说具有一级缩进;两个变量的注释部分采用了对齐显示。它使用了Tab假设一个Tab等于8个空格的大小)来缩进和对齐,一块绿色表示一个Tab。

    同样的代码,在另一个开发人员的机器上(一个Tab等于4个空格的大小)打开可能就不再对齐:


    造成这一现象的原因是代码的对齐使用了Tab,而不同编辑器的Tab键大小设置不一样。因此下一个Tab stop的位置可能发生变化,导致代码不对齐。如果使用空格代替Tab,就不会有这个问题,因为空格的数量是不会变化的。

    下面以Visual Studio 2008为例,来说明如何正确地设置Tab到空格的转换。

    在Visual Studio 2008中可以按快捷键 [CTRL] +[R] +[W] 来显示原先不可见的字符如Tab和空格,这样可以时刻提醒自己在需要对齐的地方不要用Tab。下图中,向右的箭头表示Tab,小点表示空格。(Tab size=8, Indent size=4,下面有具体解释)

    在Visual Studio中可以设定Tab和缩进的大小(单位是空格):工具->选项->文本编辑器->C/C++->Tabs。记得要把“插入空格”选上,这样所有新产生的Tab都会自动转换成对应的空格数(下图中为8)来代替Tab。需要特别说明的一点是,原先已经存在的Tab并不会因为该选项而自动转换成空格。


    如果选了“插入空格”,上面的代码在编译器中显示为:

    这样的代码,无论在哪个编辑器中都是对齐的。

    保持Tab(Keep Tabs)

    需要详细说说VS中”保持Tab“这个选项。即使你选了这个选项,也不意味着每次按下Tab键都会插入一个Tab字符 ASCII0x09)。实际上,按下Tab后只是向右边移动Indent size个空格(上例中为4)。只有当移动以后的位置刚好处在一个物理Tab边界(即Tab size的整数倍)时,编辑器才会插入Tab而不是几个空格。仔细想想,这是可以理解的。

    总结

    代码的对齐必须使用空格而非Tab,因为后者在不同编辑器中的大小可能是不一样的,容易导致代码在其他机器上不再对齐。

    参考

    1. 这篇文章讨论了为什么要用空格来对齐:Tab-size independent source code formatting

    2. Noah Richards回答了提问者关于按下Tab键后右移格数的问题:cannot get the tab size to be different than the indent size

  • 相关阅读:
    基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台
    RocketMQ-Console安装及RocketMQ命令行管理工具介绍
    RocketMQ之一:RocketMQ整体介绍
    Prometheus 监控之 zookeeper
    详解MySQL数据类型
    Linux2:Linux目录结构
    再谈AbstractQueuedSynchronizer3:基于AbstractQueuedSynchronizer的并发类实现
    再谈AbstractQueuedSynchronizer2:共享模式与基于Condition的等待/通知机制实现
    Java虚拟机15:再谈四种引用状态
    再谈AbstractQueuedSynchronizer1:独占模式
  • 原文地址:https://www.cnblogs.com/zhoug2020/p/3328928.html
Copyright © 2011-2022 走看看