为什么空行缩进不好?

Why is indentation in empty lines bad?

本文关键字:缩进 为什么      更新时间:2023-10-16

我知道的每个自由/开源软件项目都有禁止在代码中尾随空格的规则。但是我认为在下一行继续当前的缩进是很自然的:

int main()
{
....int a = 42;
....
....return a;
}

但是git还是会抛出警告。所以我的问题是:为什么内的制表符当前缩进不好?

我不是在寻找"总是这样做的"这样的答案。让我们假设在整个项目中是一致地缩进的

这可能是因为合并补丁与无用的空白比它应该更难。

diff(1)patch(1)将空格和制表符视为重要内容。(问任何Makefile.py源文件-他们重要!)如果你的 "blank line"有四个空格,而我的 "blank line"有八个空格,那么我们之间共享补丁的任何尝试都会因为非常微不足道的原因而失败。

当然,如果你大量改变代码块的缩进,你将不得不做一些工作来使补丁无论如何都应用。但是试图在看起来空白的行上跟踪合并失败是痛苦的。(我在这方面浪费了太多时间。是的,vim listchars可以帮助,但是一直打开listchars阅读代码很烦人。)

所以人们标准化了没有尾随空格。从存储的角度来看,担心这里或那里丢失一打字节可能没有意义,但是确实使合并补丁更容易。我们完全可以标准化添加尾随空格,正如您所建议的那样,并且同样高兴,但是我们也可以标准化尽可能简洁的方法。

这对于习惯于使用段落导航在代码中跳转的vi用户来说也是不礼貌的。有时我在vi时这样做,当我跳过几个函数时,这很令人惊讶,因为看不见的字符说这实际上是前一段的一部分。

我认为这归结为"不要在你的代码中隐藏多余的意外字节"。

正如@sarnold指出的那样,冗余的惊喜字节使补丁和差异不必要地混乱。