it-swarm.cn

制表符与空格-在任何情况下,每种情况下正确的缩进字符是什么?

Drupal.org中托管的代码的编码标准建议使用两个空格来缩进代码。其他网站建议使用制表符来缩进代码。

在每种情况下,每种情况下适当的缩进特征是什么?请解释您给出的答案。

84
kiamlaluno

空格

根据您的环境,选项卡的列数可以不同,但​​是空格始终是一列。

就构成缩进的空格(或制表符)而言,在整个代码中保持一致比使用任何特定的制表符停止值更为重要。

129
user8

制表符

现在,当然,一致性比任何一个都重要,好的IDE使得差异可以忽略。也就是说,此线程的意义是一场神圣的战争,因此:

我更喜欢标签:

  • 它们是专门用于缩进的字符
  • 它们允许具有不同缩进大小首选项的开发人员在不更改代码的情况下更改代码的外观(数据和表示形式的分离,以赢得胜利!)
  • 用制表符半缩进是不可能的。因此,当您从使用3个空格的网站复制代码到4个空格的缩进文件中时,就不必处理对齐问题。
248
Fishtoaster

使用制表符缩进行的开头,每个缩进级别使用one制表符,让每个人都选择他们想要的宽度。

如果要将字符排在行内,请使用空格,因此无论制表符大小如何,它们始终会对齐。

并找到并打败所有让这个愚蠢的事情首先成为问题的早期软件作者。
(严重的是,为什么还要讨论这个问题?接下来,您将告诉我您也想使用多个字符作为换行符!)

117
Peter Boughton

制表符

  • 允许错误更明显,对空格进行微管理很烦人。
  • 是一致的,它们仅用于缩进,除非您注释错误。
  • 是可自定义的,您可以在编辑器的选项中指定它们的宽度。
  • 效率更高,为什么当您可以点击1个制表符时键入4个空格。
  • 占用的空间小于多个空格。
  • 占用的空间多于一个空格。
  • 花费较少的时间进行
  • 倾向于在IDE中更好地工作。

在制表符完全没用的地方应使用空格

即使是对齐参数和注释, 选项卡仍然可以更好地工作

76
Tamara Wijsman

制表符的所有参数在理论上都是很好的。但...

在理论上,实践和理论是相同的。实际上,事实并非如此。

是的,使用标签可以确定缩进级别。是的,您可以结合使用制表符和空格来对齐内容。在理想的世界中

实际上,您看不到空格和制表符之间的区别,在移动代码时它们似乎总是混杂在一起,而在另一个将制表符设置为8列的程序中查看代码是很麻烦的。

我曾经使用标签。然后,我开始作为团队的一部分工作并共享代码。我很快成为空间的拥护者。因此,尽管我可以同情标签的乌托邦,但我无法想象不使用空格。

41
g .
31
Fishtoaster

胜利的标签。

23
Joel Barsotti

I.绝对。讨厌。 4.空格。

为什么?主要是因为我厌倦了使用键盘浏览代码并不得不不断地按leftleftleftleft来跳过一个缩进的问题。这是从早期版本的Notepad ++甚至普通的Windows记事本中诞生的,那里没有格式按钮。当我在其他所有地方都使用4时,人们只使用3时,我遇到了很多问题。

另一个原因是制表符专门用于缩进,后来才被用于导航。当简单的space可以工作时,为什么要做spacespacespacetab?当简单的选项卡和首选项可用时,为什么IDE必须正确处理2-5个间隔的代码和格式?

不幸的是我是少数。

20
TheLQ

我个人喜欢在所有内容中使用制表符,因为每个开发人员都可以控制每个制表符的缩进量。这样,您就可以灵活地进行显示。

话虽如此,我通常会模仿文件中的任何编码样式(因为我花了大量时间进行维护工作)。

12
Brandon

我认为没有缩进(至少在没有小小的战争的情况下)这样的事情。

我个人喜欢四个空间。它们使我能够更快地阅读代码,并且在每个编辑器(甚至是Vi)中看起来都一样。

10
Josip Medved

空格,因为当您将注释对齐到代码,函数参数列表,复杂的多行表达式或此类性质的右边时,您希望您的美丽作品适合所有人出现。如果您使用制表符,并且允许人们以不同的方式设置其制表符,那么除了最简单的代码缩进以外,他们都会破坏所有对齐方式。

此外,显而易见的是,世界上每个人都应该使用vim,这使得缩进,取消缩进和浏览“制表位”变得很简单,即使在缩进空间的文件中也是如此。

8
hobbs

制表符是自然的和正统的选择,因为按定义它们用于缩进。

不幸的是,制表符的实现不均匀,因此实际的唯一解决方案是4个空格。

6
Wizard79

您显然需要一种组合方法。

如果要与其他开发人员共享代码,则需要进行标准化,并且由于这是不可能的(koff koff),因此需要使每个人都做四个空格。

然后,您需要一个足够聪明的编辑器,不要对此感到愚蠢,要知道它应该像缩进一样对待前面带有四个空格的行。任何现代的IDE或程序员的编辑器都可以使用空格而不是制表符来自动处理代码。

4
Dan Ray

为什么有人不能实现这一点:

  • 代码以紧凑的格式存储,对相关系统有利
  • 当每个开发人员打开代码时,都会按照他们想要的格式进行格式化
  • 当他们完成后,回到紧凑格式

每个人都很高兴,因为他们都看到了自己的“格式”

这样难吗?

4
adolf garlic

我是一个4位数的家伙,制表符不一致。

3
Walter

答案是,在每种情况下都不可能有一个适当的缩进字符。使用字符进行格式化是不灵活的,并且在团队中使用不同样式时可能导致冲突。

使用不同的格式化样式完美,灵活地格式化代码的唯一方法是虚拟地进行编码,即没有任何缩进字符。我知道唯一支持此功能的代码编辑器是以下示例中使用的代码编辑器:

为了演示虚拟格式,以下屏幕截图来自使用此缩进方法的XSLT编辑器*(还有一个简短的视频 此处 )。出于说明目的,XSLT中的每个字符都以黄色突出显示,以使内容中唯一的制表符或空格字符清晰可见。代码缩进由编辑器的渲染系统调整左边界(背景为白色)来处理。

enter image description here

唯一的前导空格字符在Books行之前,因为这是文字文本内容,而不是代码,因此必须保留这些空格字符。

使用虚拟格式时,您可以选择缩进宽度以适合环境和缩进样式,而不会影响源文件中的任何字符。如果需要平整的代码视图,甚至可以将缩进宽度设置为0,如下所示:

enter image description here

为了与空格字符格式进行对比,在编辑器中打开的没有虚拟格式的同一XSLT将由该编辑器的自动格式化程序转换为以下格式:

enter image description here

上方屏幕截图中较大的空白黄色块清楚地显示了常规编辑器的格式化程序添加的空格字符。不幸的是,现在无法将它们与实际内容区分开,因此必须修改XSLT才能更正此问题。

摘要

XSLT可能是一个极端的情况,但是该原理对于许多编程语言都适用:字符应用于内容,格式化时应寻求替代方法。

**披露:具有虚拟格式的XSLT编辑器是由我自己的公司开发的*

3
pgfearo

到目前为止尚未提到:缩进很重要的语言(Python,Haskell)。但是1个字符会算作1个字符,无论是空格还是制表符,因此如果使用制表符,编译器看到的缩进可能与屏幕上显示的缩进不同。

因此,在像Haskell这样的语言中,必须有空格。在Makefile中,必须使用TABS。在其他所有方面,这都是个人喜好问题,如今已不算什么-每个体面的编辑器都具有“(将空格引至空格”和“将空格引至空格”)命令。

3
Ingo

空格或制表符-Atwood真正说的是选择一件事并在您的项目中保持一致。代码格式化的唯一圣杯是确保其格式一致,这样,在您之后维护您的代码的精神病患者就不会感到被迫永久解决这种情况。

就是说,如果您使用Python)或其他任何将空格作为实际编程构造的语言,我将无法想象使用制表符。

3
Noah Goodrich

显然,制表符在Delphi中弄乱了东西,所以我不在Delphi中使用制表符。

但是,我使用Emacs进行其他所有操作,并且始终使用制表符,因为制表符正好位于我希望它们移到的位置。

3
Peter Turner

我曾经使用空格,但是最近我一直在使用制表符,纯粹是因为这是我最终注意到时设置的Eclipse。我们团队中的所有其他开发人员都使用Eclipse,因此当我们意识到我们已经使用它们很久了并且没有理由去更改空间时,对选项卡进行标准化是有意义的。我对未发行的书多少感到惊讶。

在IDE)中将显示的制表符大小设置为3或5个字符,可以大大简化区分空格的代码段(目前几乎总是4个)和区分空格的代码段。

2
Shabbyrobe

已经给出了很多论据,但是没有人提到我们可以去的地方将来

标签或空格!

理想情况下,代码应被视为数据,而不应以任何特定的文本格式存储。任何开发人员都可以应用自己的首选视图。此外,此视图不应仅限于文本,但可以包括表格,颜色选择器和数学公式。

这个想法不是太牵强。是JetBrain的 面向语言的编程 编辑器 元编程系统(MPS) 首先使我意识到这解决了整个讨论,同时增加了许多其他可能性。 (是的,这可以通过编辑器插件来实现,但是与MPS所采用的方法相反,直接处理文本会增加很多不必要的复杂性。)

与制表符和空格相反,可以直接在 抽象语法树 上工作的缺点很少。为了使该技术成熟到商业上可行的产品,需要的只是这些。这种现象的最初迹象正在显现。很大程度上基于MPS,创建了一个商业动作脚本编辑器 Realaxy

我希望看到其中一个大公司跳入这项技术的概念,看看会发生什么!

1
Steven Jeuris

都不是更好,也不是更坏。唯一重要的是要保持一致。

如果您是一个团队,请选择您个人喜欢的任何东西。考虑您喜欢的编辑器的默认行为,但是请选择您喜欢的任何东西。

如果您在团队中,请执行团队的工作。期。

在我的各种工作中,我使用了两个空格,四个空格,八个空格,制表符,空格和制表符,我想我可能也使用了一个空格。我告诉编辑器该怎么做,然后我再也不考虑它了,编辑器会确定细节。

唯一的另一件事是确保您选择一个智能编辑器。 Emacs还是VI?现在that我愿意打一场圣战:-)

0
Bryan Oakley