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

Twitterで「三項演算子」がトレンド入り 192

ストーリー by hylom
便利なんだけど難しい 部門より

Anonymous Coward曰く、

11月7日の昼頃から夜にかけて、Twitterでなぜかプログラミング言語の「三項演算子」がトレンド入りしていたようである(まとめまとめTwitterトレンド速報)。

発端となったTweetもいまいち不明で、なぜ今更「三項演算子」が話題なのか、多くの人が首を傾げているようだ。プログラマーのTwitter率の高さと、みんなの三項演算子に対する想いの強さを伺わせる。スラド読者諸氏も三項演算子への想いを語っていただきたい。

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

    by Anonymous Coward on 2019年11月08日 18時45分 (#3713045)

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

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

    ここに返信
    • Re:発端? (スコア:5, おもしろおかしい)

      by Anonymous Coward on 2019年11月08日 18時56分 (#3713055)
      >三項演算子で、

      >(条件式) ? true : false

      >って書くよね?

      >レビューで条件式だけで動作するとしつこく詰め寄られたけど、可読性が落ちると突っぱねた。

      その理屈が成り立つなら

      (条件式 ? true : false ) ? true ? true : false : false ? true : false

      て書けばさらに3倍くらい可読性が上がるのでは?
      • by Suzuno (48093) on 2019年11月08日 19時24分 (#3713082) 日記

        (条件式 ? true : false ) ? true ? true : false : false ? true : false
        て書けばさらに3倍くらい可読性が上がるのでは?

        殺意しか上がりません……!

      • by Super KUMASAN (34209) on 2019年11月09日 6時56分 (#3713317)

        普通は、三項演算子を入れ子で使うの禁止というコーディングルールがあると思いますが。

        私は、入れ子にしない限りは可読性は悪くなく、コンパイルで最適化されるので速度も落ちないので、(条件式) ? true : false は良いと思います。

        • by kei0 (48634) on 2019年11月11日 10時42分 (#3714159)

          三項演算子の三項目に別の三項演算子を突っ込むのはそれほど見づらくないのでよく書くな。
          return 第1条件 ? a :
                        第2条件 ? b :
                        第3条件 ? c : d;
          みたいな?

          switch caseに二項演算子が使える言語だとそっちで書くことも考えるけど、caseの間に代入とかreturnとかが並んでるのはスマートじゃないと思ったり。

          入れ子禁止ルールは見たことないけど、そういう職場のあるのね。

    • by 7743 (11762) on 2019年11月08日 19時09分 (#3713069)

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

    • by Anonymous Coward

      return (条件)? true : false; なんて書くくらいなら return 条件; だよなあ
      そりゃレビューで落とすでしょ感

      • by Anonymous Coward

        それを可読性が落ちると言ってつっぱねたというのがすごい。
        ? true : false
        がついている方が読みにくいと超個人的には思うけどね。

        • by Anonymous Coward

          俺も、ゴミつけたら読み難いとしか思えないが、読み易い読み難いってのは個人の感性というか感想だから仕方ないのだろう。
          とはいえ自分に都合がよいからといって、一般的でないことやって読み難いから止めろと言われても、つっぱねるってのは、エンジニアを仕事にするの向いてないというか、チームに存在するだけで迷惑な奴ってことだから仕事変えて趣味だけに留めるべきだろうな。

          https://twitter.com/fnya/status/1192039284821250048 [twitter.com]
          別ツイートで、こんなことも言ってるから、つまみぐい的にプログラム書いてきて、そもそものプログラムへの理解が乏しいようだから、自分の能力不足を改善せずに目先の問題回避してきた結果、そうしないと困ってるのかもね。
          そのあたりも思考方向がエンジニア向きじゃなさそう。

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

            by Anonymous Coward on 2019年11月08日 19時28分 (#3713087)

            TokusiN @toku51n 11月6日
            返信先: @fnyaさん

            trueとの比較は危険なのでやってはいけない。もしどうしてもbool型との比較が必要なのであれば!=falseにしなければいけない。
            1件の返信 2件のリツイート 10 いいね

            fnya@Web/Mobileアプリ構築中 @fnya 11月6日

            危険というのは、PHPやJavaScriptでオブジェクトがtrue判定されることですか?
            1件の返信 0件のリツイート 0 いいね

            TokusiN @toku51n 11月6日

            いえ、trueと評価されるべきものがfalse判定されることがあります。
            1件の返信 0件のリツイート 3 いいね

            fnya@Web/Mobileアプリ構築中 @fnya11月6日

            ?!
            1件の返信 0件のリツイート 0 いいね

            ?!じゃねえよ。頭が正常系でできてんのか?

      • by Anonymous Coward

        if ( (a == b) == true )
        みたいなのはコード引き取ると良くある…

        • by Anonymous Coward on 2019年11月08日 21時52分 (#3713170)

          if (!Foo()) { ... }
          って書きたいけど、「!」の視認性が悪いから、

          if (Foo() == false) { ... }
          としてるんだという意見に対して、

          if (!!!Foo()) { ... }
          のように奇数個の「!」を気の済むまで書けばいいじゃんていう話好き

          # そして間違って偶数個の!を書いてしまうまでがブック

      • by Anonymous Coward

        return ok ? true : false;
        なら俺でも怒るが
        return b*b-4*a*c >= 0 ? true : false;
        なら怒らない

  • Twitterしってる ? トレンドきづいた ? 俺も俺もー : ちゃんとトレンドみろよ : あばよ

    ここに返信
  • by nekopon (1483) on 2019年11月11日 10時37分 (#3714156) 日記
    ぜひアレを見て卒倒してください(いじわる
    ここに返信
  • by Anonymous Coward on 2019年11月08日 18時44分 (#3713044)

    見た気がする。

    ここに返信
  • デレステの新しいキャラだよね?

    ここに返信
  • by Anonymous Coward on 2019年11月08日 18時59分 (#3713056)

    コードに可読性をもたせるってのは、読み手になるたけ考えさせないことを目的とする
    解釈が必要なんてのは最悪
    ってばっちゃが言ってた
    # ロジックの必要性からならコメントで補う

    ここに返信
    • by TarZ (28055) on 2019年11月08日 19時06分 (#3713065) 日記

      おっしゃる通りなので、ここはこう書くべきでは。


      # コードに可読性をもたせるってのは、読み手になるたけ考えさせないことを目的とする
      # 解釈が必要なんてのは最悪
      ## ってばっちゃが言ってた
      ロジックの必要性からならコメントで補う

    • by Anonymous Coward
      大抵の言語には型があって非常に重要な情報なのに、ほとんどの状況でそれは考えないと見ただけではわからない
      というのが問題なんだと思う。
      真偽値型を使うときは常にtrueとかfalseとか即値で書きたくなるのも
      変数名には型を表す接頭辞をつけたくなるのも
      全部これが原因。
  • by Anonymous Coward on 2019年11月08日 19時05分 (#3713063)

    PowerShell 7 Preview 4でサポートされて、
    賛否両論を呼んでじわじわと広がってきたのではないでしょうか?

    ここに返信
  • by Anonymous Coward on 2019年11月08日 19時08分 (#3713068)

    通称三項演算子だけど、三項演算子というカテゴリの「条件演算子」が正しい。

    のだと思ってるけどどうだろう。(弱気)

    ここに返信
    • by hjmhjm (39921) on 2019年11月09日 11時46分 (#3713414)

      わかる。
      三項演算子が一つしかないから、そういういいかげんな呼び方が許されてるだけ。

      だから、ほかの三項演算子を発明するべき!
      でも、どういうのがあり得るかな?
      だいたいは二項演算子の組み合わせですんじゃうし。

      逆に、条件演算子の「:」以降をオプションにするとか?

  • by Anonymous Coward on 2019年11月08日 19時15分 (#3713076)

    そもそも、三項演算子を知らない人が結構いる。

    ここに返信
typodupeerror

※ただしPHPを除く -- あるAdmin

読み込み中...