使用2个空格和4个空格缩进,在实际应用或技术上有哪些优势?

18

除了口感、习惯和个人偏好之外,在编程时使用2空格缩进和4空格缩进是否有任何优势?

例如,在这个Google样式指南中,建议CSS使用2空格缩进。

在不同系统之间传输数据时,使用其中一种缩进方式是否具有技术上的优势?

是否有广泛接受的惯例?(可能因语言而异)


1
如果您使用8个字符的制表符,在4个制表符缩进中,您将获得32个空格。使用4个字符的制表符可以获得16个空格。在2个字符的制表符上,您将获得8个空格。今天,2或4个字符的制表符是关于可读性的偏好。即使在非常好的分段代码中,您也可能有3或4个嵌套缩进。我更喜欢2个字符,以避免代码堆叠在屏幕的右侧(在代码换行时)。这完全取决于显示器大小。 - Heroselohim
1
突出优点从何时开始成为基于观点的行为? - Robo Robok
@RoboRobok Python使用4个空格比2个更好,因为它没有大括号或end块,但我认为在任何其他语言中都可以使用。无论如何,尽管每个被关闭的问题都有一些关于SO关闭政策和社区的嘲讽评论,但我相信如果这个网站变成了Reddit或Quora那样,人们只是互相陈述意见,那么这个网站将会变得不太有用。人们喜欢抨击SO是“敌对”的,但请考虑到主题限制是使该网站变得优秀的一部分。 - ggorlen
“Good practice advice”听起来像是“基于个人意见的”。这不是一个实际可回答的编程问题。该网站的目的不在于提供建议,而在于回答技术性问题,例如“为什么我在连接字符串和整数时程序会崩溃?”Quora或Reddit是用于讨论哪种缩进方式更好的网站。 - ggorlen
@ggorlen 所以这样就不是了,基于你所陈述的理由。如果你能找到一个更客观的度量标准(例如适用于不同字符集/系统的兼容性或者文件大小),那么这个问题实际上可能会有另外一个答案而不是“不”。 - Pim
显示剩余13条评论
3个回答

27

来自:Linux内核编码风格

制表符宽度为8个字符,因此缩进也应为8个字符。有些异端邪说试图将缩进深度设置为4个(甚至2个!)字符,这就像试图将圆周率的值定义为3一样。

原因:缩进背后的整个想法是清晰地定义控制块的起始和结束位置。特别是当您连续20小时盯着屏幕时,如果您有大的缩进,您会发现更容易看出缩进是如何工作的。

现在,有些人会声称,8个字符的缩进会使代码向右移动太远,在80个字符的终端屏幕上很难阅读。对此的答案是,如果需要超过3级的缩进,程序已经崩了,应该修复它。 简而言之,8个字符的缩进使阅读更容易,并具有警告您嵌套函数太深的附加好处。请注意这个警告。


5
然而,Linus确实说过:“编码风格非常个人化,我不会强迫别人接受我的观点,但对于我需要维护的任何内容来说,这就是适用的规则,我也更倾向于将其应用于其他大多数事情。” - Klesun

20

就技术方面而言,两种缩进方式并没有明显的“技术”优劣之分。实际上,我唯一能想到的“技术”问题是对源文件字节数的影响。

  • 如果您使用空格字符(ASCII SP)来表示缩进,则2个空格比4个空格少了2个字符。

  • 如果允许使用TAB字符,则(在Windows上)TAB会缩进最多4个空格,因此TAB字符会减少一些字符。但另一方面,在许多其他操作系统上,传统上使用TAB进行缩进最多8个空格,因此如果您希望您的源代码在所有平台上看起来很好,就不应该使用TAB进行缩进。

此外,通常惯例是将CSS、JavaScript和Web相关语言“精简化”,以使网站“更快”。除此之外,还会去掉缩进,从而使得这种微小的技术差异变得无关紧要。

(对于CSS的可读版本,节省传输时间/存储空间太微不足道,现在的系统都针对大众市场进行优化,存储和移动千兆字节大小的文件(电影)已经司空见惯,源代码相形见绌。)


至于“实用”优势,如果您不希望在深度缩进上浪费过多屏幕空间,则使用2个字符缩进可能更易于查看和编辑文件。从这个角度来看,2个字符缩进比4个或8个字符缩进要好。然而,这已经涉及到“个人口味”的问题......除非:

  • 您必须使用只能显示(例如)80列的设备;
  • 您必须遵守代码样式规则,限制您使用80列。

有广泛接受的惯例吗?

一般来说没有。

在某些语言中,也许有,但我想不出任何一个。即使在Java中,缩进的最常见约定是4个空格,但其他约定也可以接受。


17

我在书中使用两个空格,否则横向空间很快就会用完。在IDE中我使用四个空格。

在以前的时代,当然是许多年前了,它曾经是一个物理制表符,即八个空格,但是代码嵌套太多,无法维持那么多级别已经几十年了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接