goto普及委員会
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/02/22(水) 20:40:23gotoを使うのが例外になってること自体が例外なんだよヴォケ
というわけで、どんどんプログラムにgotoを追加して行きましょう。
0002デフォルトの名無しさん
2006/02/22(水) 20:42:090003デフォルトの名無しさん
2006/02/22(水) 20:44:10if分岐とloopに還元できない有名な例。
A: process A;
if (x) goto A; else goto B;
B: processB;
goto C:
C: process C;
goto B;
0004デフォルトの名無しさん
2006/02/22(水) 20:44:29構造化やオブジェクト指向はむしろgotoを使いやすい状態にしてる気がします。
変にforやwhileやif使うより見やすくなることも結構あると思う
0005デフォルトの名無しさん
2006/02/22(水) 20:52:360006デフォルトの名無しさん
2006/02/22(水) 21:02:52バグだらけのどうしようもないコードを書く。
0007デフォルトの名無しさん
2006/02/22(水) 21:08:26つうか2ch以外で積極的なアンチgoto派って
お目にかかったことがないんだけど
0008デフォルトの名無しさん
2006/02/22(水) 21:13:35ループにできるように見えるけど
なにか解釈間違えてるかな。
do
{
processA;
}while(x);
while(true)
{
process B;
process C;
}
0009デフォルトの名無しさん
2006/02/22(水) 21:19:42委員長は後藤さんですか?
0010デフォルトの名無しさん
2006/02/22(水) 21:21:450011デフォルトの名無しさん
2006/02/22(水) 21:32:490012デフォルトの名無しさん
2006/02/22(水) 21:35:06A: process A;
if (x) goto B; else goto C;
B: processB;
goto C:
C: process C;
goto B;
の間違いでした…
0013デフォルトの名無しさん
2006/02/22(水) 22:02:510014デフォルトの名無しさん
2006/02/22(水) 22:07:47それにJavaはgotoをきれいにラップした制御構文も追加されてるし。
0015デフォルトの名無しさん
2006/02/22(水) 22:32:25これは?
ただしこれはむしろgotoを使ったほうがよいとは思うが。(もちろんprocess A直後の分岐に関して)
process A;
bool f = x ? false : true;
for (;;)
{
if (f)
{
process B;
f = true;
}
process C;
}
0016デフォルトの名無しさん
2006/02/22(水) 22:37:04gotoを恐れず使う兵共がfinallyや多重breakを語るスレ
http://pc8.2ch.net/test/read.cgi/tech/1123726695/l50
0017デフォルトの名無しさん
2006/02/22(水) 23:09:02label: goto label; のほうが楽だし見やすい気がする
0018デフォルトの名無しさん
2006/02/23(木) 01:57:27使った方がいいのに使わないのも美しくない
0019デフォルトの名無しさん
2006/02/23(木) 02:24:150020デフォルトの名無しさん
2006/02/23(木) 09:02:350021デフォルトの名無しさん
2006/02/23(木) 13:33:29制御のフローだけ論じても無意味だと思うんだが。
0022デフォルトの名無しさん
2006/02/23(木) 22:17:45switch(x){
case a: prefix a; goto postix_a;
case b: prefix b; goto postix_a;
case c: prefix c; goto postix_a;
postfix_a:
.
.
.
break;
case d: prefix d; goto postix_d;
case e: prefix e; goto postix_d;
case f: prefix f; goto postix_d;
postfix_d:
.
.
.
break;
}
まぁgoto使わなくても問題なく書けるけど面倒臭がりだから
こんな風にその場で書いちゃうわ。
0023デフォルトの名無しさん
2006/02/23(木) 23:14:54それはたまにやるなあ。
手で書くなら分割するけど、簡単なソースコードジェネレータとかではそんなの吐かせたりする。
0024デフォルトの名無しさん
2006/02/23(木) 23:24:26http://pc8.2ch.net/test/read.cgi/tech/1123726695/l50
0025デフォルトの名無しさん
2006/02/25(土) 23:23:55面白いスレだな
20付近で爆笑
0026デフォルトの名無しさん
2006/02/25(土) 23:38:31process A;
bool f = x;
for(;;){
if(f){
process B;
}
f = true;
process C;
}
じゃね?
0027デフォルトの名無しさん
2006/02/26(日) 15:08:36「なに!?」
「こいつぁクソコードだよ。行数は多いがな」
「これが? 一部上場企業の大サーバからかっぱらったんだぞ?」
「goto文だよ」
「goto文? 幻の命令と言われるアレか」
0028デフォルトの名無しさん
2006/02/26(日) 19:43:390029デフォルトの名無しさん
2006/02/28(火) 13:30:040030デフォルトの名無しさん
2006/03/03(金) 00:38:53「再燃goto文論争」という題で「プロだったらgotoが一番の解なら
もちろん使うし、その判断は的確で一瞬だ」みたいなことが書いてあって、
全体的にはなるほどと納得したんだけど、
gotoの使用例の一つに「多重break」をあげていて、
「これは関数に分けてreturnにすれば解決するが、プロは誰も
そんなことはしない」と言っているのがちょっと気になった。
for()for()if()goto; って、たぶんgoto時点での両カウンタの値が
欲しいか、またはgotoしたかどうかが欲しいわけでしょ?
だったらなんか、1関数に分離する価値もあると思うんだが。
上の本はアルゴリズム辞典だから、スピードを考えて関数化を考えてないのかも
しれないけど。
0031デフォルトの名無しさん
2006/03/03(金) 04:21:24その本の例が
> for()for()if()goto;
だったの?
こんなんなら、多分関数にすると思うけど。いい名前付けられそうだし。
ループを抜けて次のステートメントに行くだけなら、関数にするでしょ。
変形ダイクストラ探索みたいなのを非再帰でやると、枝狩りとか例外処理とかで、凝集度の観点から goto がふさわしいこともまれにあるよ。
C++ なら goto がふさわしい場面がさらに減るから、その本の状況はちょっと古いんだと思うよ。
0032デフォルトの名無しさん
2006/03/03(金) 06:18:19gotoなんて所詮は1ブロック中で完結する物なんだから
関数とか設計・構造レベルで論じるものではない。
0033デフォルトの名無しさん
2006/03/03(金) 12:43:36>gotoが発生しそうだから関数分割すると言う判断は馬鹿っぽい。
多分 >30 が言ってるのは、
bool match_hoge( const TABLE * , int * outx, int * outy )
に置き換えられるようなものしか、多重 break の必要のあるコードを思いつかない、ってことだと思うよ。
0034デフォルトの名無しさん
2006/03/03(金) 16:12:430035デフォルトの名無しさん
2006/03/06(月) 18:32:14あとは再帰が使えない(使いたくない)状況で使うとかね。
意味のあるgotoと、無理やりなgotoは分けて考えるべきだと思う。
0036デフォルトの名無しさん
2006/03/07(火) 10:14:440037デフォルトの名無しさん
2006/03/07(火) 22:35:060038デフォルトの名無しさん
2006/03/08(水) 14:55:000039デフォルトの名無しさん
2006/03/08(水) 21:24:07もっと便利なtry,catch,throwがあるし
0040デフォルトの名無しさん
2006/03/08(水) 22:22:040041デフォルトの名無しさん
2006/03/08(水) 23:48:15VC++なんかの__finallyはデストラクタがあるオブジェクトが内部に存在すると使えないし。
0042デフォルトの名無しさん
2006/03/23(木) 11:50:38■ このスレッドは過去ログ倉庫に格納されています