使用Python或Javascript时,应始终将二进制运算符放在上一行的末尾,以防止换行符过早地终止代码。它可以帮助您发现错误。
但是在C或C ++中,这不是问题,所以我想知道:
我有什么理由比第二个版本更喜欢第二个版本吗?
return lots_of_text
+ 1;
与
return lots_of_text +
1;
(例如,其中之一有助于防止其他类型的错误吗?还是其中之一被认为更具可读性?)
使用Python或Javascript时,应始终将二进制运算符放在上一行的末尾,以防止换行符过早地终止代码。它可以帮助您发现错误。
但是在C或C ++中,这不是问题,所以我想知道:
我有什么理由比第二个版本更喜欢第二个版本吗?
return lots_of_text
+ 1;
与
return lots_of_text +
1;
(例如,其中之一有助于防止其他类型的错误吗?还是其中之一被认为更具可读性?)
Answers:
从答案中可以看出,在此问题上尚未达成共识。除非您与团队合作,否则请使用您更喜欢的东西。
我更喜欢在运算符之前插入换行符。
每当我必须换行时,我通常最多在同一行上放置一个术语:
牛顿的Python引力定律:
force = (
gravitational_constant
* mass_1
* mass_2
/ (distance * distance)
)
比较一下:
force = (
gravitational_constant *
mass_1 *
mass_2 /
(distance * distance)
)
我想知道,我“ 被距离平方除以”,我不想知道,“ mass_2 被除以”,因为那不是我对数学表达式的看法。
此外,我通常首先要知道,什么我做的(运营商),之前我关心什么,我做的事情(操作数)。
或考虑以下复杂的SQL语句:
WHERE
a = 1
AND b = 2
AND c = 3
AND ( -- or put the OR on one line together with the AND
d = 3
OR e = 1)
AND x = 5
这使我能够轻松地了解各个条件的连接方式,只需从上至下浏览,而不必阅读每一行直到最后找到操作员,而不是:
WHERE
a = 1 AND
b = 2 AND
c = 3 AND
(
d = 3 OR
e = 1) AND
x = 5
我想在“而言前者X
是真实的”,那么我修改那个说:“ 和这样也不错”,这感觉比周围的其他方法更自然的我。此外,我发现第一个视觉上更容易解析。
或一个PHP示例:
$text = "lorem ipsum"
. "dolor sit amet, "
. "consectetur adipisicing elit, "
. "sed do eiusmod tempor";
再说一次,我可以垂直浏览一下,看看我只是在串联文本,因为大多数时候,我觉得我实际上并不在乎字符串/条件中的内容。
当然,我不会无条件地应用此样式。如果将换行符放在操作员看来对我来说更有意义,我会这样做,但目前我无法想到一个示例。
.
不是.=
吗?
force
我几乎总是在二进制运算符之前换行,以使代码读者清楚这是表达式的延续而不是下一条语句。如果下一条语句通常会缩进,则这一点很重要。例如,考虑具有复杂条件表达式的if语句:
if (first_part_of_condition &&
second_part_of_condition) {
statement_within_then_part;
}
条件表达式的第二部分很容易与then部分的第一条语句混淆。如果条件的第一部分很长,并且&&最终偏离右侧,则可能会造成混乱。将此与替代方法进行比较:
if (first_part_of_condition
&& second_part_of_condition) {
statement_within_then_part;
}
这看起来有些奇怪,但是很清楚条件的第二部分不是语句的开始。
我也在其他情况下执行此操作,但是if语句最重要,因为缩进模棱两可。当然,可以更改缩进或支撑位置,但这看起来也很奇怪。
tl; dr该行的左端对于快速阅读理解更重要,因此将运算符放在左端是一个更加突出的标记,它表示这是一个连续表达式,而不是陈述。
+
,-
也可以理解为一元前缀运算符)。使连续线脱颖而出的通常解决方案是使它们缩进更多(即两个级别)。
我总是会用第一个。您希望弄清楚那里的那一处在做什么。如果我看到它,并且在1上方有文字墙,那么我将不知道1的使用情况。
紧邻1的'+'清楚地表明,至少我正在对有问题的1做某事,而不是出于明显的原因而挂出“我全都在您的代码中...”。
我认为,如果在一行中通过在末尾使用二进制运算符来指示该语句在下一行中继续执行,则将极大地帮助您理解理解,从而使该语句不完整。缺少分号不足以让我立即理解。
这可能只是一个习惯问题,但是除非您只使用需要分号的语言(鉴于Shell脚本,makefile和Python等语言的普遍性,我认为这是不现实的),否则您也不会有这种习惯。
编辑:Giorgio在评论中提出了一个极好的观点:这种用法在数学和自然语言中都呼应了常见的标点符号。你会写
我下沉,
所以游泳
你不会写
我下沉
,所以游泳