アカウント名:
パスワード:
式と文がごっちゃになってて言語デザイン的に気持ち悪い構文だけど、コードがウダウダと長くなりそうな場面ではつい使ってしまう。
カンマ式、3項演算子もそうだけど、短絡演算子使いがち。if (a()) { b(); } else { c(); }の代わりにa() && b() || c();みたいな。
で、「b()がエラー返すとなぜかc()も実行される!」と大騒ぎ…。
A「"なんで素直に3項演算子を使わないんですか", a() ? b() : c();」B「 "elseが要らない時もあるから…";」A「a() ? b() : (void)0, "で良いでしょうが";」B「"それなら", a() && (b(), true) || c(), "の方が素直かなー";」
# Lispが俺にもっとカッコ付けろと囁いている
それって、b()やc()の戻り値がvoidではダメなんじゃないかな。破壊的操作を期待しているなら、if文で書いてもらった方がその意図が明確になるし、戻り値を使うなら、三項演算子の方が分かりやすいよね。
if (a()) { d = b();} else { d = c();}
よりも
d = a() ? b() : c();
の方が、この処理によってdの値が変化するということが明確だし、代入先がdからeに変わっても、1箇所書き換えるだけで済む。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
アレゲは一日にしてならず -- アレゲ見習い
カンマ式、3項演算子の乱用 (スコア:0)
式と文がごっちゃになってて言語デザイン的に気持ち悪い構文だけど、
コードがウダウダと長くなりそうな場面ではつい使ってしまう。
Re:カンマ式、3項演算子の乱用 (スコア:0)
カンマ式、3項演算子もそうだけど、短絡演算子使いがち。
if (a()) { b(); } else { c(); }
の代わりに
a() && b() || c();
みたいな。
Re:カンマ式、3項演算子の乱用 (スコア:1)
で、「b()がエラー返すとなぜかc()も実行される!」と大騒ぎ…。
A「"なんで素直に3項演算子を使わないんですか", a() ? b() : c();」
B「 "elseが要らない時もあるから…";」
A「a() ? b() : (void)0, "で良いでしょうが";」
B「"それなら", a() && (b(), true) || c(), "の方が素直かなー";」
# Lispが俺にもっとカッコ付けろと囁いている
Re: (スコア:0)
それって、b()やc()の戻り値がvoidではダメなんじゃないかな。破壊的操作を期待しているなら、if文で書いてもらった方がその意図が明確になるし、戻り値を使うなら、三項演算子の方が分かりやすいよね。
よりも
の方が、この処理によってdの値が変化するということが明確だし、代入先がdからeに変わっても、1箇所書き換えるだけで済む。