アカウント名:
パスワード:
> 判断条件が128個あるなら128個のcaseが並ぶswitch文は問題ないと思うけど
C/C++だと,分岐が128個もあるような大きなswitch 文は関数テーブルつかって書きなおす方が保守しやすくなる,ってよく言われてます.
すくなくとも私は 128個もcaseが並んでいたら,その時点でそのコードを読む気力が無くなります.これ全パターンデバッグできてるの?break とか抜けたりしてないの?等,いちいちチェックしたくないので.
> C/C++だと,分岐が128個もあるような大きなswitch 文は> 関数テーブルつかって書きなおす方が保守しやすくなる,> ってよく言われてます.
関数テーブルを使うと甚だしい性能劣化を招くこともある。(勿論、そうでない場合もある)
break の抜けをチェックしてでも性能をあげなきゃいけない状況も往々にしてある。
ケースバイケースだよ。 # これを言いたかった。
それから全パターンデバッグについては関数テーブルを使う場合でも試験するのが当然。
糞コードはSwitch文から生まれる使う時は細心の注意を払う必要があります
可読性、メンテナンス性をぶち壊す根源
別に大きなswitch文でも問題ないと思う。見やすいシンプルな条件なら。小細工をしたほうが悪くなるコードってのもあるもんだ。
テストケースも、逆に作りやすいはず。「いちいちチェックしたくない」と言うことは、もともと貴方はテストの網羅性を考慮してない。その発想にはちょっとゾッとしました。
仕様書からテーブルをつくってテーブルから関数テーブルとテストケースを自動生成するんです.
> テストケースも、逆に作りやすいはず。
大きなswitch文でコード書いて,それからテストケース書いてると,それこそ網羅性が維持できないですよ.ぞっとしませんか?
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
あつくて寝られない時はhackしろ! 386BSD(98)はそうやってつくられましたよ? -- あるハッカー
別に (スコア:0)
関数の最後が『return 0;』でも、正常なら最後まで通るコードなら問題ないと思うけど。
謎の連番で命名されたクラス名/メンバ変数名でも、命名の取り決めがちゃんとあれば問題ないと思うけど。
Re:別に (スコア:2)
> 判断条件が128個あるなら128個のcaseが並ぶswitch文は問題ないと思うけど
C/C++だと,分岐が128個もあるような大きなswitch 文は
関数テーブルつかって書きなおす方が保守しやすくなる,
ってよく言われてます.
すくなくとも私は 128個もcaseが並んでいたら,その時点でそのコードを読む気力が無くなります.
これ全パターンデバッグできてるの?break とか抜けたりしてないの?等,いちいちチェックしたくないので.
Re:別に (スコア:2)
> C/C++だと,分岐が128個もあるような大きなswitch 文は
> 関数テーブルつかって書きなおす方が保守しやすくなる,
> ってよく言われてます.
関数テーブルを使うと甚だしい性能劣化を
招くこともある。(勿論、そうでない場合もある)
break の抜けをチェックしてでも性能をあげなきゃ
いけない状況も往々にしてある。
ケースバイケースだよ。 # これを言いたかった。
それから全パターンデバッグについては
関数テーブルを使う場合でも試験するのが当然。
Re: (スコア:0)
糞コードはSwitch文から生まれる
使う時は細心の注意を払う必要があります
可読性、メンテナンス性をぶち壊す根源
Re: (スコア:0)
別に大きなswitch文でも問題ないと思う。見やすいシンプルな条件なら。
小細工をしたほうが悪くなるコードってのもあるもんだ。
テストケースも、逆に作りやすいはず。
「いちいちチェックしたくない」と言うことは、もともと貴方はテストの網羅性を考慮してない。
その発想にはちょっとゾッとしました。
Re: (スコア:0)
仕様書からテーブルをつくって
テーブルから関数テーブルとテストケースを自動生成するんです.
> テストケースも、逆に作りやすいはず。
大きなswitch文でコード書いて,
それからテストケース書いてると,それこそ網羅性が維持できないですよ.ぞっとしませんか?