私たちは最近、このスタイルガイドを採用することを決定しましたが、次のステートメントは私たちにいくつかの頭痛の種を引き起こしました:
より大きな式では、オプションの括弧によってコードがより明確に読み取られる場合があります。
正確に言うと、_より大きな式_は非常に主観的であり、条件文を括弧で囲むことに慣れている開発者は、括弧を使用すると読みやすさが向上すると主張します。 ミニマリストとして、条件文の意味を変えないのであれば、括弧の使用には反対します。
何かご意見は?
それらが役立つと私が見た多くの場所は、等価性チェックが単一のブール値として使用されている場所を明確にすることです。
let thing = thingA == thingB
// vs.
let thing = (thingA == thingB)
それがことが明らかに存在します操作の順序thing
「の値を持つことになりますブールがあるがあるthingA
に等しいthingB
が、それはして視覚的に解析するために多くの時間がかかります2番目よりも最初のオプション。
これは複合ステートメントでも役立ちますが、操作の順序も明確にする必要がある場合があります。
if thingC && (thingD || thingE) { ...
基本的には、走査性能についてはほとんどです:あなたはそれを読んで、それはパースに2つ目の長いも、あなたを取る場合、古い実際に素早くを取得しています。 そして、ジュニア開発者が何が起こっているのかを推論するのにはるかに長い時間がかかる場合、それは災害への扉を開く可能性があります。
@designatednerdに同意します。 個人的には、式を括弧で囲むことも好きです。 私もミニマリストですが、コードは読みやすく、わかりやすいものでなければならないと思います。 それ以外の場合、コンパイラは実際には気にしません。 私の見方では、 =
後に、たとえばlet thing = foo
ような単純な割り当てが表示されることを期待しています。 ただし、その後の括弧は、割り当てが後で、おそらく行の終わりで発生するという視覚的な合図です。
let thing = ( /* some short or long logic here, skip it */ ) ? foo : bar
@ samkim102私があなたの質問を正しく読んだ場合、あなたは他のコメントが扱ったケースについて質問しているのではなく、代わりに、 if
ステートメントの条件の周りの親の使用について質問しています。
その場合は、その場合に親が使用されるべきではないことをより明確に述べる方法を理解するのを手伝ってください。 ガイドの現在の文言は私には明白に思えます。
観察:ルールは、明確さを促進する場合にのみ括弧を使用するように変更できます。 私は、元のガイドラインが次のことを防ぐためにそこに置かれたと信じています。
// go for a Sunday drive
if (day.isSunday) {
vehicle.drive()
}
一方、関係する他の演算子の優先順位を知っているために括弧を省略している場合は、おそらく自分の利益のために賢すぎます。
問題は、私が理解しているように、すべての場合に明確にするために親が必要であると考える人がいるように見えることです。 明らかに、これはif
およびswitch
ステートメントのほとんどの場合には当てはまりません。 他のコメンテーターが言及しているように、代入ステートメントでの使用法は、より暗い沼です。 「明快さを促進する」は主観的な基準であり、ここでの状況を助けていないようです。
来週、原作者からの連絡がない場合は、活動がないため閉鎖します。
応答がないため閉鎖されました。
最も参考になるコメント
@designatednerdに同意します。 個人的には、式を括弧で囲むことも好きです。 私もミニマリストですが、コードは読みやすく、わかりやすいものでなければならないと思います。 それ以外の場合、コンパイラは実際には気にしません。 私の見方では、
=
後に、たとえばlet thing = foo
ような単純な割り当てが表示されることを期待しています。 ただし、その後の括弧は、割り当てが後で、おそらく行の終わりで発生するという視覚的な合図です。