对于具有多个 bool(boolean) 运算符的if条件,我已经看到用于可读性的换行符。我记得曾经看到有人关于加入条件部分的 bool(boolean) 运算符是前导还是尾随的拖累规则。我不记得我在哪里看到过什么,他们使用什么规则,或者他们的推理是什么。

尾随:

if (
  someVariable &&
  otherThing
) {
  // code
}

领导:
if (
  someVariable
  && otherThing
) {
  // code
}

偏爱一种口味的原因是什么?哪一个适合更清洁的git diff?

最佳答案

diff的重要性不如缩进重要。在更复杂的情况下,拖尾可以使压痕保持完整。这是一个例子。请注意,第一个示例中的缩进具有相同的缩进级别的所有相关项,而在第二个示例中,由于&&在行的开头,因此您的眼睛必须向右移动。如果从下至上进行扫描,则影响会更大。

if (
   someVariable &&
   isComplexButEvalsToTrueOrFalse({
     myProp: "myValue"
   }) &&
   isComplexButEvalsToTrueOrFalse({
     myProp: "myOtherValue"
   })
) {
  // code
}


if (
   someVariable
   && isComplexButEvalsToTrueOrFalse({
     myProp: "myValue"
   })
   && isComplexButEvalsToTrueOrFalse({
     myProp: "myOtherValue"
   })
) {
  // code
}

归根结底,这都是主观的。对于有值(value)的东西,Prettier使用尾随方法,除非最后一项是空数组或对象,并且它可以全部容纳在一行上。它仅缩进是否存在嵌套表达式,在这种情况下,使用parenthesis and indentation使其清楚。通常来说,当您缩进另一个层次并且&&本身没有嵌套时,您会缩进,但是眼睛肯定必须向内 Dart 才能读取var / fn / obj / arr的名称,因此具有类似的效果。

关于javascript - 在多行if语句中使用前导或尾随 bool 运算符的原因,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49389359/

10-09 19:35