👋

[Feature #20925] && || を行頭にかけるように許容する提案

2024/11/16に公開

[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 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
GitHubで編集を提案

Discussion