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

酷いコードを収集する「ウンコード・マニア」」記事へのコメント

  • by Anonymous Coward
    判断条件が128個あるなら128個のcaseが並ぶswitch文は問題ないと思うけど。
    関数の最後が『return 0;』でも、正常なら最後まで通るコードなら問題ないと思うけど。
    謎の連番で命名されたクラス名/メンバ変数名でも、命名の取り決めがちゃんとあれば問題ないと思うけど。
    • by annoymouse coward (11178) on 2012年08月14日 22時11分 (#2212015) 日記

      > 判断条件が128個あるなら128個のcaseが並ぶswitch文は問題ないと思うけど

      C/C++だと,分岐が128個もあるような大きなswitch 文は
      関数テーブルつかって書きなおす方が保守しやすくなる,
      ってよく言われてます.

      すくなくとも私は 128個もcaseが並んでいたら,その時点でそのコードを読む気力が無くなります.
      これ全パターンデバッグできてるの?break とか抜けたりしてないの?等,いちいちチェックしたくないので.

      親コメント
      • by CowardDuck (25674) on 2012年08月14日 22時49分 (#2212028)

        > C/C++だと,分岐が128個もあるような大きなswitch 文は
        > 関数テーブルつかって書きなおす方が保守しやすくなる,
        > ってよく言われてます.

        関数テーブルを使うと甚だしい性能劣化を
        招くこともある。(勿論、そうでない場合もある)

        break の抜けをチェックしてでも性能をあげなきゃ
        いけない状況も往々にしてある。

        ケースバイケースだよ。 # これを言いたかった。

        それから全パターンデバッグについては
        関数テーブルを使う場合でも試験するのが当然。

        親コメント
        • by Anonymous Coward

          糞コードはSwitch文から生まれる
          使う時は細心の注意を払う必要があります

          可読性、メンテナンス性をぶち壊す根源

      • by Anonymous Coward

        別に大きなswitch文でも問題ないと思う。見やすいシンプルな条件なら。
        小細工をしたほうが悪くなるコードってのもあるもんだ。

        テストケースも、逆に作りやすいはず。
        「いちいちチェックしたくない」と言うことは、もともと貴方はテストの網羅性を考慮してない。
        その発想にはちょっとゾッとしました。

        • by Anonymous Coward

          仕様書からテーブルをつくって
          テーブルから関数テーブルとテストケースを自動生成するんです.

          > テストケースも、逆に作りやすいはず。

          大きなswitch文でコード書いて,
          それからテストケース書いてると,それこそ網羅性が維持できないですよ.ぞっとしませんか?

あつくて寝られない時はhackしろ! 386BSD(98)はそうやってつくられましたよ? -- あるハッカー

処理中...