暴論を吐いてみる箱
C/C++では原則switch文禁止をプログラム規約にすべきだ、など。
賛成が得られそうに無い暴論を吐いてみてください。
(njqwca) 2008-09-23 22:30:24作成 2013-06-10 01:05:54更新 303投票 63有効票 52気になる 61興味無い 4673参照 はてなブックマークはてなブックマークに追加 Twitterでつぶやく

戻る投票順更新順
42. 『>C/C++では原則switch文禁止をプログラム規約にすべきだ』についてのコメントGoogleYouTube

では、各関数のアドレスを関数型ポインタ配列に入れ、
それを使って関数を呼び分けるようなプログラムにでもしようか。
[#1](neblfm) 2008-09-25 21:09:15

根拠がわかんねっす
[#2](zqzbta) 2008-09-25 21:42:41

(説明する義務は無いが)break絡みか?
[#3](tfbhiq) 2008-09-25 22:22:09

breakの書き忘れで何時間ムダにしたかわからない
[#4](zgvpub) 2008-09-28 14:56:33

CPPで用いるならオブジェクト指向的ではなく、Cで用いるならswithでの判断時間が勿体無いので関数テーブルにしろってことだろうが、
swith文自体は凄く汎用的な制御文なので使用禁止は極端ということで暴論って話なのだろう。
上位部分で多様は厳禁だけど下位レベルならバリバリ使っちゃっていいよ。
[#5](xmlkaf) 2008-09-28 15:46:51

言語名が拡張子になる事が多いとはいえ、C++をCPPと書かれるとCプリプロセッサを連想してしまう。
[#6](zcijnk) 2008-09-28 15:50:54

Perl のeval みたいなのが欲しい
[#7](xshuar) 2008-09-28 16:42:18

コンパイル結果のコードを見て、その上で項作は主張してるのかな?
例えばcase cs:でcsがn,n+1,n+2,n+3…となっている場合、大抵のコンパイラは
テーブルジャンプをするコードにするよ。項作の望む様な処理にね。
速度を重視しての処理なら関数呼び出しは逆効果だね。特にスタックに積んで関数を呼ぶ
タイプのCPU(86系とか)はオーバーヘッドが大き過ぎだよ。

関数型ポインタ配列を利用する事でプログラムが速く、見やすくなる事はあるけど
項作のやり方は全く逆なので駄目じゃないかな。
[#8](dnthcs) 2008-09-28 22:24:59

箱作も叩いてよ!
[#9](npapfl) 2008-09-28 23:46:02

stateパターンとかstrategyパターンとかコルーチンとかその辺の意味で言ってるなら
switchとifをなるべく排除するのは当たり前というか目的の一部だし、暴論でも何でもない。
速度が気になるならメタプログラミングでも呼び出し規約でも何でも工夫したら良い。
けど一律禁止は無いから無効票
[#10](dovbwc) 2008-09-29 02:48:51

>Perl の eval
try節はほとんどそうじゃね?
[#11](toixib) 2009-05-03 13:32:40
コメント(10行1000文字まで)

画像jpg,png,gifのみ500Kbytesまで