Nic*_*las 6 language-agnostic code-formatting
这确实是一个详细的格式问题,但我每次都会被它绊倒......
对于多行条件表达式,逻辑运算符的首选放置位置是什么?
替代方案 1:每行末尾的逻辑运算符
if (value1 == comparision1 &&
value2 != comparision2 &&
!comparision3.Contains(value3))
{
// stuff
}
Run Code Online (Sandbox Code Playgroud)
优点:线条优美对齐
缺点:逻辑运算符很容易被错过
替代方案 2:每行开头的逻辑运算符
if (value1 == comparision1
&& value2 != comparision2
&& !comparision3.Contains(value3))
{
// stuff
}
Run Code Online (Sandbox Code Playgroud)
优点:逻辑运算符强烈存在
缺点:对齐看起来很奇怪
你喜欢哪个?过去哪些格式对您有帮助?过去哪些格式让您感到困惑?
编辑:
刚刚发现了一个我以前没有找到的相关问题(尽管我进行了深入的搜索):What is the best Formats for Operator Places on New Lines?
人们似乎普遍认为,运营商的安置完全取决于个人意见(除了那里的答案中概述的一个例外),但我不同意这一点。由于我写的赞成/反对意见,肯定会对代码可读性产生影响!
剩下的问题是:我没有个人意见,每次遇到这种情况都不知道该选择什么风格。显然理论上很难评价,所以我向你们询问了你们过去用这种表达方式所做的实践经验。
将逻辑运算符放在新行上的参数。
部分复制自:https ://news.ycombinator.com/item?id=7975386
它们排列在第一个语句(或表达式)下方,更容易看出哪些行是前一行的延续
您可以添加新子句,而无需编辑现有行,从而在审阅期间实现更清晰的差异,并使您不会成为最后一个接触 gitblame 或任何其他源代码控制等效项中现有行的人。
更容易注释掉代码行(因为最后一行)
GNU 编码标准,第 5.1 节格式化源代码:
将表达式拆分为多行时,请将其拆分在运算符之前,而不是运算符之后。这是正确的方法:
if (foo_this_is_long && bar > win (x, y, z)
&& remaining_condition)
https://www.gnu.org/prep/standards/html_node/Formatting.html