选择空格还是制表符?

2018年6月3日

关于代码缩进用空格还是制表符的问题,一直以来大家都各执一词,往往说“只要统一最重要”[1][2],却对新项目如何选择暧昧不明。

有人说,Visual Studio、Vim等智能编辑器里,用户按制表符,编辑器自动改为四个空格[3][4]。所以支持在物理文件上使用空格。但是他们仅考虑了增加缩进的情况。当删除缩进或还原到上级缩进时,需要按退格键。这个时候即使用户设置编辑器自动转换制表符为四个空格,编辑器也不知道按一次退格需要删除几个空格。从操作简便来说,在物理文件上使用制表符,比较方便增加和删除。想象删除一级缩进,用空格的用户要按退格键四次,用制表符的只要按退格键一次,大大提高效率。

也有人指出制表符的缺点。在网页或其他应用程序中,不一定支持制表符,它们可能把制表符识别为移动焦点了。这个忧虑有道理。但是如果开发人员不在IDE里编写代码,会发生比不能输入制表符更严重的问题。比如没有语法高亮、没有语法检查、没有智能提示,很容易写出错误代码。因此,只要坚持在正规IDE里编写代码,使用制表符没有什么缺点。

如果要在所有文件里用制表符缩进,可能不符合某些文件的格式。比如,IIS能可视化地编辑ASP.NET WebForm的web.config文件,但IIS使用空格缩进。如果一个文件里混用空格和制表符,显得不太好看。

综上所述,代码文件、HTML、CSS、JavaScript、XML等,都可以使用制表符缩进。但是,如果某种文件主要被另一个工具读写,且该工具的输出格式是空格,则我们不必坚持在该文件里用制表符缩进。

参考资料

. Tabs versus spaces—what is the proper indentation character for everything, in every situation, ever?. . [2018-06-03].

参考资料

  1. 夕夕. 写代码时,缩进使用 tab 还是空格? . . 2013-07-08 [2018-06-03].
  2. 陈龙. 写代码时,缩进使用 tab 还是空格? . . 2018-05-29 [2018-06-03].
  3. Cyandev. 写代码时,缩进使用 tab 还是空格? . . 2017-08-25 [2018-06-03].
  4. 姜乐衣. 空格还是Tab?用Vim写Python缩进的正确姿势. . 2016-07-09 [2018-06-03].