有关多行条件表达式中逻辑运算符放置的建议

问题描述 投票:0回答:2

这确实是一个详细的格式问题,但我每次都被绊倒......

对于多行条件表达式,逻辑运算符的首选放置位置是什么?


替代方案 1:每行末尾使用逻辑运算符

if (value1 == comparision1 &&
    value2 != comparision2 &&
    !comparision3.Contains(value3))
{
    // stuff
}

优点:线条排列精美

缺点:逻辑运算符很容易被错过


替代方案 2:每行开头的逻辑运算符

if (value1 == comparision1
    && value2 != comparision2
    && !comparision3.Contains(value3))
{
    // stuff
}

优点:逻辑运算符强烈存在

缺点:对齐看起来很奇怪


你更喜欢什么? 过去哪些格式对您有帮助? 过去哪些格式让您感到困惑?


编辑:

刚刚发现了一个我以前没有找到的相关问题(尽管我进行了深入搜索):新行上运算符放置的最佳格式是什么?

人们似乎普遍认为,运营商的安置完全取决于个人意见(除了那边答案中概述的一个例外),但我不同意这一点。由于我写的赞成/反对意见,肯定会对代码可读性产生影响!

剩下的问题:我没有个人意见,所以每次遇到这种情况都不知道该选择什么风格。显然理论上很难评价,所以我问你过去用这种表达方式所做的实践经验。

language-agnostic code-formatting
2个回答
3
投票

没有最好的格式。使用您团队的标准。如果您不在团队中或负责为团队定义标准,请选择使代码最容易阅读的内容。清晰度是要考虑的最重要的事情。

您选择哪种格式并不重要。最重要的是您和您的团队在使用该格式时“一致”。如果所有代码都遵循相同的模式,那么代码将比根本没有标准时更容易阅读。

将逻辑运算符放在新行上的参数。

0
投票
https://news.ycombinator.com/item?id=7975386


它们排列在第一个语句(或表达式)下方,更容易看出哪些行是前一行的延续
  • 您可以添加新子句,而无需编辑现有行,从而在审阅期间实现更清晰的差异,并使得您不会显示为 git Blame 或任何其他源代码控制中最后一个接触现有行的人等效。
  • 更容易注释掉代码行(因为最后一行)
  • GNU 编码标准,第 5.1 节格式化源代码:
  • 将表达式拆分为多行时,请将其拆分在运算符之前,而不是运算符之后。正确的做法是这样的:

    if (foo_this_is_long && bar > win (x, y, z) &&剩余_条件)

    https://www.gnu.org/prep/standards/html_node/Formatting.html

© www.soinside.com 2019 - 2024. All rights reserved.