パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

if statement の中の && とか || とか」記事へのコメント

  • もうやらないですねぇ
    エラー出したくなったときとかめんどいし
    年のせいか明確さ優先でそんなことにほんのささやかでも頭使う余裕が無い
    書き捨てなら使わんでも無いですが、
    人が見る可能性なあるコードならやりませんね
    if文中での代入やらforで二つ初期化、演算とかもやりませんねぇ

    • ショートサーキットで問題がになるのは条件式に副作用がある場合で、それを前提にしたコードは書くべきではないとは思いますが、
      if条件式中で&&や||を使わずにどうするの?って逆に疑問に思ってしまいますねぇ。
      「if (cond1 && cond2) {…」は、「if (cond1) { if (cond2) {…」 って書いたりのでしょうか?
      # ショートサーキットは怖いとかいって 「if (cond1 & cond2) {」って書くと、非常に危険。

      > if文中での代入

      これはC++では多用してますね。変数宣言とセットで。CでもC99からはいけるんでしたっけ。

      if (FILE *fp = fopen(path, "rb")) {
           /* ファイル

      • 条件式に副作用が無ければショートサーキットがあっても無くても処理結果は変わらないので、
        「ショートサーキットを利用しない」って言うのは「副作用のある条件式を(複数)使わない」ってことです
        流石に&&使わないとか、&使うとかって話じゃ無いですね…かさばりますし

        if文での代入はミスが出やすいのでやりたくないというところ
        ()忘れるとかですね
        if (result = func() != FAIL)
        とか
        んーでも単に単純にしたいって方が大きいかも

        宣言込みでスコープ縛れるのはかなり魅力的なんですけどね…
        若い子が見た目真似して先に書いたようなドジを踏むのが怖くてためらいます

        perlでよくやるやつはif文が無いからかそこまで気にならないですね
        専用単語立てて欲しい気はしますが
        then/elseとかだとモロかぶりでまずいか…

        メソッド設計はそういうの良いですよね

        • 判定処理に副作用が無い場合でも、ショートサーキットには「より頻度の高い(もしくは処理の軽い)条件判断を左に持ってくることで、判断処理の平均計算量負荷を下げることができる」という利点がありますよ。

          あとは、左辺が成立していることが右辺判定の実行可能条件になってる場合。「if (p && p->value > 0) {」とかですね。
          (元コメの「if (cond1 && cond2) { → if (cond1) { if (cond2) { 」で想定したのはこれです。

          if (p) {
              if (p->value > 0) {…

          って感じのコードは結構見かけると思います)

          • あとは、左辺が成立していることが右辺判定の実行可能条件になってる場合。「if (p && p->value > 0) {」とかですね。
            > (元コメの「if (cond1 && cond2) { → if (cond1) { if (cond2) { 」で想定したのはこれです。
            これは理解が及んでおりませんでした
            私もこういうのは使います
            気にならないのはイディオムとして捕らえてるのかなぁ

            親コメント

Stay hungry, Stay foolish. -- Steven Paul Jobs

処理中...