パスワードを忘れた? アカウント作成

Twitterで「三項演算子」がトレンド入り」記事へのコメント

  • 発端? (スコア:3, 参考になる)

    by Anonymous Coward

    きっかけはこのおもしろい(オブラートに包んだ表現)ツイートではないかな

    https://twitter.com/fnya/status/1192036095820615680 [twitter.com]

    • C言語で条件の部分が数値にしか見えない場合は可読性が多少上がるかもしれない。
      ブール型の扱いが厳密な言語なら可読性があるように書かないとコンパイルエラーになるから、そういう言語しか使ってなければおかしく見えるかもね。

      • by Anonymous Coward

        ブール型の扱いが厳密な言語なら可読性があるように書かないとコンパイルエラーになるから、そういう言語しか使ってなければおかしく見えるかもね。

        具体的に
        return (条件);
        がコンパイルエラーになって
        return (条件) ? true : false;
        がコンパイルエラーにならない言語って何があるの?

        • そういうことではなくて、ブール型を厳密に扱う言語のブール型を返す関数で「return 1+2*3/4」は真を返すことにならず、コンパイルエラーになるってこと。

          • by Anonymous Coward

            そういう言語では
            return (1+2*3/4) ? true : false;
            もコンパイルエラーになるのでは?

            • そういう言語ではreturn (1+2*3/4) != 0というような真偽値を表す式であることが一目でわかる(==可読性が高い)ように書かないとコンパイルエラーになるということです。

              • by Anonymous Coward on 2019年11月09日 0時04分 (#3713251)

                だとしても その上で、? true : false とわざわざ参考演算子で処理増やしてるほうが同じことを二重に書いていて可読性悪いだろう。

                return ((1+2*3/4) != 0);

                return ((1+2*3/4) != 0) ? true : false;

                だぜ。発端は後者がいいっていってるようだが、前者のほうが簡潔で読み易いし、したいことも明確。
                後者だとわざわざ処理足したうえで結果が同じって、まさか入れ替えを間違えてるのか?とも思えてくる。

                今時のコンパイラは~って奴がいて確かにインタプリタじゃないんだし俺もそうだとは思う。
                でも、そういうのと別次元の話だろ、これ。

              • by 7743 (11762) on 2019年11月09日 0時16分 (#3713256)

                私のコメントはC言語で条件式が数値の場合ならまだありかもね。という話なので、
                1. return 1+2*3/4
                or
                2. return (1+2*3/4) != 0
                or
                3. return (1+2*3/4) ? true : false
                ということになります。これなら趣味の問題かなと。

              • by Anonymous Coward

                > 3. return (1+2*3/4) ? true : false
                > ということになります。これなら趣味の問題かなと。

                散々コメント書いて結局それが結論なんですか?

                そもそも3のコードがダサい、3のコードを書くような奴はプログラムが全然解ってない、
                3のコードを書くようなやつはアホだ、って話題なのは解ってますか?

              • by 7743 (11762) on 2019年11月09日 3時05分 (#3713294)

                いや解ってないですが。
                というか、そのコメント自体何の根拠もないわけで。もしかして、Anonymous Cowardは意識の集合体なので、誰が書いてようが考えていることは同じとかいうネタですかね。

              • by Anonymous Coward

                自分だったら、
                4. return ((1+2*3/4)!=0)? true : false;
                と書きます。
                これなら、int => boolの評価を言語仕様知らなくても読めますから。

              • by Anonymous Coward

                ブール型を厳密に扱う言語を持ち出してきておいて、3は無いんじゃないの?

日本発のオープンソースソフトウェアは42件 -- ある官僚

処理中...