制表符与空格缩进

Ion*_*icu 26 coding-style

如果您阅读任何编码样式指南,您很可能会看到使用空格而不是标签进行缩进的建议.一些指南明确说:永远不要使用标签.

我知道有可能发起关于标签与空间的核战争.这肯定不是我想要的.但是,我的意思是问你这个推荐是否有充分的理由.为什么每个人都在说空格是缩进代码的最佳方法?

Sta*_*key 6

标签在不同的计算机和打印机上可以有不同的大小。代码在原始计算机上可能看起来不错,但在另一台计算机或打印输出上,间距可能看起来很奇怪。

有了空格,无论使用何种计算机,代码看起来都一样。

  • 是的,但是选项卡的优点是您可以设置选项卡的宽度而不会实际影响源。感谢您的印刷解释。没想到(因为我不打印代码) (13认同)
  • 如果两个开发人员有两种不同的缩进首选项怎么办?他们都可以将标签宽度设置为他们喜欢的任何值。但是,对于空格,这是不可能的。因此,“带有空格的代码将始终看起来相同”的论点是无效的,因为很多时候看起来相同并不是具有不同偏好的不同开发人员的意图。 (7认同)

Ton*_*roy 5

获得标签看起来正确在很大程度上取决于源代码可能显示或打印的所有软件的配置/选择.如果您有一组受限制的软件,并且发现这对您来说不是一个实际问题,那就太好了 - 如果您看到了价值,那就去吧.但是,请注意,当一行使用制表符缩进时,然后在后续行继续,您需要根据左括号的位置进行缩进,排列引号等. - 您将以某种方式混合制表符和空格在视觉上无法验证其正确性(除非您的编辑器以不同方式显示标签).使用箭头键来交叉标签或删除可以更快,但也更加令人困惑和令人沮丧.对于使用不同制表符宽度的不同人来说,在同一代码上干净地工作很少见,这可能是制表符的主要承诺.就个人而言,我使用空格.

  • +1用于混合制表符和空格参数 (2认同)
  • 不过,人们也可能会说,尝试在行之间对齐是一件愚蠢的事情,因为您尝试对齐的第一行的部分可能会因重命名而发生变化。请参阅 Kevlin Henney 的演讲,关于“完美”替代方案的七个无效编码习惯,它使任何“排队”借口都失败了。 (2认同)
  • @JacobZimmerman:如果无论哪种方式都有一个_真正_好的理由,那么它就不会成为一个无休止的分歧的话题 - 仍然可以有一个选择,平均而言稍微但显着更好,尤其是在使用不同编辑器的大型且多样化的团队中工作时, Henney 的观点同样适用于 80 列编码器,但在某些环境中,由于使用了编辑器和工具,投入重新格式化工作是一种净胜。无论如何,在其代码环境中有充分理由的读者不需要在这里寻求指导。 (2认同)
  • 我最近就这个主题进行了一场辩论,并了解了如何使用空格对于一些有视力障碍的人来说是一个真正的可访问性问题:https://www.reddit.com/r/javascript/comments/c8drjo/nobody_talks_about_the_real_reason_to_use_tabs/ TLDR:他们使用制表符,以便他们能够满足自己的需求,否则他们需要始终将空格转换为制表符,然后在提交之前将制表符重新转换为空格。 (2认同)