👋
[Feature #20925] && || を行頭にかけるように許容する提案
[Feature #20925] Allow boolean operators at beginning of line to continue previous line
- 以下のように
||
や&&
などを行頭でもかけるように許容する提案
condition1
|| condition2
condition1
&& condition2
condition1
or condition2
condition1
and condition2
- これめっちゃわかるんですよねえ、例えば
if
の条件式で利用すると以下のように縦にわかりやすくかけます
if condition1
&& condition2
&& condition3
end
- あと行頭に
||
&&
に書いてあるほうがパッと見のコードの意図が読み取りやすいのはありますねえ
# こっちは末尾まで見ないとこれが複数の条件式なのかどうかわからない
request.secret_key_base.present? &&
request.encrypted_signed_cookie_salt.present? &&
request.encrypted_cookie_salt.present? &&
request.use_authenticated_cookie_encryption
# こっちは行頭をみるだけで複数の条件式であることが明確である
request.secret_key_base.present?
&& request.encrypted_signed_cookie_salt.present?
&& request.encrypted_cookie_salt.present?
&& request.use_authenticated_cookie_encryption
- あとは次のようなコードの場合に
if
の中身が分かりづらい、みたいな話もありますね
# パッと見、どこまでが条件式でどこまでが本体かわかりづらい…
if request.secret_key_base.present? &&
request.encrypted_signed_cookie_salt.present? &&
request.encrypted_cookie_salt.present?
request.encrypted_cookie
end
# こっちだと明らかにわかりやすい
if request.secret_key_base.present?
&& request.encrypted_signed_cookie_salt.present?
&& request.encrypted_cookie_salt.present?
request.encrypted_cookie
end
- この提案自体は概ねポジティブで matz も同意していますね
- あとはパーサの実装さえできれば…ってところですかねー
- ちなみにわたしはこういうときは末尾に
\
をつけてごまかすことが多いです
# 実質条件式が1行になるのでこれは動作する
if request.secret_key_base.present? \
&& request.encrypted_signed_cookie_salt.present? \
&& request.encrypted_cookie_salt.present?
request.encrypted_cookie
end
Discussion