我正在读Linux 内核编码风格,Linus 写了这样的内容(第一章缩进):
不要将多个语句放在一行上,除非您有什么要隐藏的:
if (condition) do_this; do_something_everytime;
......
除了注释、文档之外,除了 Kconfig 之外,空格永远不会用于缩进,并且上面的示例是故意破坏的。
他说的是什么意思
something to hide
?这是讽刺吗?因为我看不到这种格式的任何编码点,更不用说hide something
.还有一个问题,什么是
上面的例子是故意破坏的。
意思是?是不是意味着
上面的例子是故意打破这个(没有空格)规则的。
谢谢 : )
答案1
这种编码风格很容易误解代码的用途。在示例中,由于缩进并且在同一行中有另一个语句,人们可能会错误地认为该语句
do_something_everytime
在块中,并且仅当为 trueif
时才执行。condition
相反,该if
块仅包含do_this
并且do_something_everytime
始终运行。这种“恶意”缩进过去曾导致软件出现错误,例如苹果公司的一个著名错误TLS 证书验证影响 Safari 以及可能的其他 Apple 软件。
该示例还违反了解释中明确指出的无空格规则。