アカウント名:
パスワード:
きっかけはこのおもしろい(オブラートに包んだ表現)ツイートではないかな
https://twitter.com/fnya/status/1192036095820615680 [twitter.com]
C言語で条件の部分が数値にしか見えない場合は可読性が多少上がるかもしれない。ブール型の扱いが厳密な言語なら可読性があるように書かないとコンパイルエラーになるから、そういう言語しか使ってなければおかしく見えるかもね。
ブール型の扱いが厳密な言語なら可読性があるように書かないとコンパイルエラーになるから、そういう言語しか使ってなければおかしく見えるかもね。
具体的にreturn (条件);がコンパイルエラーになってreturn (条件) ? true : false;がコンパイルエラーにならない言語って何があるの?
そういうことではなくて、ブール型を厳密に扱う言語のブール型を返す関数で「return 1+2*3/4」は真を返すことにならず、コンパイルエラーになるってこと。
そういう言語ではreturn (1+2*3/4) ? true : false;もコンパイルエラーになるのでは?
そういう言語ではreturn (1+2*3/4) != 0というような真偽値を表す式であることが一目でわかる(==可読性が高い)ように書かないとコンパイルエラーになるということです。
だとしても その上で、? true : false とわざわざ参考演算子で処理増やしてるほうが同じことを二重に書いていて可読性悪いだろう。
return ((1+2*3/4) != 0);トreturn ((1+2*3/4) != 0) ? true : false;
だぜ。発端は後者がいいっていってるようだが、前者のほうが簡潔で読み易いし、したいことも明確。後者だとわざわざ処理足したうえで結果が同じって、まさか入れ替えを間違えてるのか?とも思えてくる。
今時のコンパイラは~って奴がいて確かにインタプリタじゃないんだし俺もそうだとは思う。でも、そういうのと別次元の話だろ、これ。
私のコメントはC言語で条件式が数値の場合ならまだありかもね。という話なので、1. return 1+2*3/4or2. return (1+2*3/4) != 0or3. return (1+2*3/4) ? true : falseということになります。これなら趣味の問題かなと。
> 3. return (1+2*3/4) ? true : false> ということになります。これなら趣味の問題かなと。
散々コメント書いて結局それが結論なんですか?
そもそも3のコードがダサい、3のコードを書くような奴はプログラムが全然解ってない、3のコードを書くようなやつはアホだ、って話題なのは解ってますか?
いや解ってないですが。というか、そのコメント自体何の根拠もないわけで。もしかして、Anonymous Cowardは意識の集合体なので、誰が書いてようが考えていることは同じとかいうネタですかね。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
目玉の数さえ十分あれば、どんなバグも深刻ではない -- Eric Raymond
発端? (スコア:3, 参考になる)
きっかけはこのおもしろい(オブラートに包んだ表現)ツイートではないかな
https://twitter.com/fnya/status/1192036095820615680 [twitter.com]
Re: (スコア:1)
C言語で条件の部分が数値にしか見えない場合は可読性が多少上がるかもしれない。
ブール型の扱いが厳密な言語なら可読性があるように書かないとコンパイルエラーになるから、そういう言語しか使ってなければおかしく見えるかもね。
Re: (スコア:0)
具体的に
return (条件);
がコンパイルエラーになって
return (条件) ? true : false;
がコンパイルエラーにならない言語って何があるの?
Re: (スコア:1)
そういうことではなくて、ブール型を厳密に扱う言語のブール型を返す関数で「return 1+2*3/4」は真を返すことにならず、コンパイルエラーになるってこと。
Re: (スコア:0)
そういう言語では
return (1+2*3/4) ? true : false;
もコンパイルエラーになるのでは?
Re: (スコア:1)
そういう言語ではreturn (1+2*3/4) != 0というような真偽値を表す式であることが一目でわかる(==可読性が高い)ように書かないとコンパイルエラーになるということです。
Re: (スコア:0)
だとしても その上で、? true : false とわざわざ参考演算子で処理増やしてるほうが同じことを二重に書いていて可読性悪いだろう。
return ((1+2*3/4) != 0);
ト
return ((1+2*3/4) != 0) ? true : false;
だぜ。発端は後者がいいっていってるようだが、前者のほうが簡潔で読み易いし、したいことも明確。
後者だとわざわざ処理足したうえで結果が同じって、まさか入れ替えを間違えてるのか?とも思えてくる。
今時のコンパイラは~って奴がいて確かにインタプリタじゃないんだし俺もそうだとは思う。
でも、そういうのと別次元の話だろ、これ。
Re: (スコア:1)
私のコメントはC言語で条件式が数値の場合ならまだありかもね。という話なので、
1. return 1+2*3/4
or
2. return (1+2*3/4) != 0
or
3. return (1+2*3/4) ? true : false
ということになります。これなら趣味の問題かなと。
Re:発端? (スコア:0)
> 3. return (1+2*3/4) ? true : false
> ということになります。これなら趣味の問題かなと。
散々コメント書いて結局それが結論なんですか?
そもそも3のコードがダサい、3のコードを書くような奴はプログラムが全然解ってない、
3のコードを書くようなやつはアホだ、って話題なのは解ってますか?
Re:発端? (スコア:1)
いや解ってないですが。
というか、そのコメント自体何の根拠もないわけで。もしかして、Anonymous Cowardは意識の集合体なので、誰が書いてようが考えていることは同じとかいうネタですかね。