@IT情報マネジメント会議室は、2009年4月15日に新システムに移行しました。
新たに書き込みを行う場合には、新しい会議室をご利用ください。
新たに書き込みを行う場合には、新しい会議室をご利用ください。
- @IT情報マネジメント 会議室 Indexリンク
- IT戦略
- 仕事の改善
- アーキテクチャ
- プロジェクト管理
- ITインフラ
- Webマーケティング
- BPMプロフェッショナル
- 業務アプリ
- - PR -
なぜ「GOTO文」を使っては、いけないのですか?
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-11-27 10:50
おじいちゃん、IF THEN ELSE ENDIFだったと思うよ、FORTRAN77では。 | ||||||||||||
|
投稿日時: 2004-11-27 11:13
えー。なんだってー。耳がとおくなってのう。もう一度大きな声で言っておくれ。
そうか、if () {}else{}だったかのう。
そうか、そうか、遠い昔のことじゃて。わしももうろくしたものじゃ。 [/quote] ←--もうろくの証 [ メッセージ編集済み 編集者: ほろりん 編集日時 2004-11-27 11:14 ] | ||||||||||||
|
投稿日時: 2004-11-27 13:14
ども、ほむらです。
同じく、終わった話であれですけれど。 GOTO文はカーソル位置よりも先にある場所へ飛ぶ分には 無理やりな構造化をするよりも読みやすいですよね。 最近の言語はbreakとかcontinueにラベルを指定できるので 使わなくなっているのも確かですけど。 関数の中でエラー処理を統一したいときなどは まだGOTO文に変わる仕様が無いですねぇ。 これが出来ればGOTO文はほんと使わない遺物になりそうな予感はするのですけれど。。 構造化を強調している人に一言。 お願いだから計画的に構造化してください。。。 関数とか使って構造化するのはいいけどクラスなどでファイル単位で飛ばれると スパゲティじゃないけどジグソーパズルなプログラムでよけいタチ悪いっす(涙 (リファタリングも同様) | ||||||||||||
|
投稿日時: 2004-12-04 13:11
ここで言っている「GO TO」文って
アセンブラーのJUMP命令も含むんでしょうか? アセンブラーも構造化マクロというのも 昔有りましたが。 | ||||||||||||
|
投稿日時: 2004-12-04 15:00
もともとGOTO文有害論は、以下の論文(というより意見書?)に基づいていますが、 ・「Go To Statement Considered Harmful」by Edsger W. Dijkstra http://www.acm.org/classics/oct95/ (36年も前のACMの論文です) そこでは、 …… the go to statement should be abolished from all "higher level" programming languages となっていて、高級言語に限定しています。マシン語レベルではどうぞお使いください、みたいなことも書かれています。実際そうだと思いますし。 当時は、GOTOに代わる構文もまだ言語にはあまり実装されていなかったので、このような論文が書かれていたようですが、今となっては、ちょっと事情が違うのではないかと思います(この衝撃的なタイトルのおかげで、ずいぶんと有名になりましたが)。 GOTO文を多用すると、プログラムの流れを追いにくくなるので(あくまでも、後でプログラムを追う場合からの視点に基づいているようです)、その使用は避けるべきというのがこの論文の概要かと思いますが、現在の高級言語には、この論文のおかげか、さまざまな制御構文が用意されているので、goto文をあまり使わなくてもすむようになっています。 個人的には、やはり、同一レベル(同一ブロック)内でのGOTOや、外側のレベルへのGOTOは、ほかに代替構文がない言語の場合には、使ってもいいんじゃないかなと思ってます(コメントをどう付けるかなどは別問題として)。が、さすがに関数の外まで(スタックフレームのアンワインドが必要になるようなレベル)までGOTOで飛ぶのはどうかと思いますが(確かPascalなどではこのようなGOTO文が使用できたと思う)、例外構文などが用意されている現在の言語では、このような用途でのGOTOもほとんど必要ないでしょうね。 | ||||||||||||
|
投稿日時: 2004-12-10 07:21
随分、昔のことですが、とても気になっていました。 アセンブラーは対象外だったわけですか。 あるお客様に常駐でシステムメンテナンスで作業していた頃 「GO TO less」が話題になりまして 新し好きのお客様の一人が、プログラム修正の話をしました。 正常に動作しているプログラムの修正の怖さや マクロ展開によるコードの冗長性を主張して 止めて貰ったことがあります。 不安だったのですが、良かったんだ。 ありがとう、ございます。 | ||||||||||||
|
投稿日時: 2004-12-25 20:27
お邪魔します。
例外クラスの使い分け…じゃダメですね(^^; うーん。クラスによって区別される例外と似たような感じで、 コンテキストによって区別された例外ってなものが有ると 便利なのかな、と、今ふと思いました。
タグジャンプ機能つきのテキストエディタは必須 ってことで、どーっすか?(^^; 個人的にはvimを愛用していますが、 タグジャンプ機能つきでしたら どれであっても役立つと思います。 タグジャンプが出来れば、 処理の続き(のソース)がファイルを超えるかどうかなんて、 もう気にならなくなります。 | ||||||||||||
|
投稿日時: 2005-12-16 15:12
goto 文についての論議が今頃あるなんて懐かしいですね
個人的にはgoto文の弊害より,そういうことが一旦言われると必ず 杓子定規にルールを作ろうとする人が現れることの方が怖いですな goto文に限らず今のオブジェクト指向の世界でもばかげたルールが 日々作られているんじゃ無いかと思うんだが |