本ブログは2009年4月21日で終了しました。
今後はアイビースターでブログを運営していますので
そちらをご覧ください。
Posted by Hibi at 06:08
実はよく使用されている「GoTo文」

今日も朝からRSSリーダでブログのチェックを行っていたらPHP 6から goto文をサポート? : 地方で活動するweb制作者の日々を綴るblogの記事が気になりました。

プログラム界ではGoTo文の使用は御法度になっているため、存在すら知らない人が多いかもしれないとのことですが、身近に使用している言語ではごく当たり前に使用している場合があります。

その言語とは・・・

詳細は以下を参照ください。
GoTo文とは読んで字のごとくで
GoTo △△△
と書かれている場合は「△△△(と書かれているところ)へ行きなさい」という命令文です。

非常に単純で昔(N88-Basic)はよく使用していたのですが、条件分岐(IF)などを組み合わせてしまうと
  「この場合はあっちへ行け!そうでない場合はこっちへ行け!」
と数が増えてきてしまうとプログラムが非常に読みにくくなり、最近では「GoToを使用しないで、関数化するなどしなさい」と言われています。

この最近は使用されることのないGoTo文ですが、実は非常に身近なプログラムではごく普通に使用されているのです。(身近と感じるのは私だけかな?)

その言語とはVB(A)です。

私はよくMicrosoft社のAccessを使用するのですが、Accessのフォーム作成時に「コントロールウィザード」をONにしてボタンを作成するとVBAにプログラムが自動で作られます。(最近は「コントロールウィザード」を使用していませんが)

例えばフォーム上に「フォームを閉じる」ボタンを作成すると下記のようなプログラムが自動で作成されます。
Private Sub 閉じる_Click()
On Error GoTo Err_閉じる_Click

DoCmd.Close

Exit_閉じる_Click:
Exit Sub

Err_閉じる_Click:
MsgBox Err.Description
Resume Exit_閉じる_Click
End Sub
このプログラムを見てもわかる通り、エラー時のジャンプにGoTo文を使用しています。

Accessのヘルプで「GoToステートメント」を見てみるとメモに
GoTo ステートメントを多用するとプログラムは読みにくくなり、デバッグが困難になります。できる限り構造化された制御ステートメント (Do...Loop、For...Next、If...Then...Else、または Select Case) を使ってください。
と明記してあります。

ヘルプ上では使用しないようなことを言っておいて、自動生成したときに使っているというのは・・・。

ゞ( ̄∇ ̄;)おいおい


もっとも、「GoToは絶対ダメだよ」というわけではなく、使い方によっては非常に便利なものなので使い方を間違えなければ有効な命令文と私は解釈しています。


PHP 6から goto文をサポート? : 地方で活動するweb制作者の日々を綴るblog


同じカテゴリー(開発言語)の記事
 
Category is 開発言語.
<%PingExcerpt%>
<%PingBlogName%> at <%PingDateTime%>
>On Error GoTo Err_閉じる_Click

ま、On Error GoTo は、別コマンドといえますから。N80 の時代から(笑)
Posted by そほ3 at 2007年08月21日 10:48
On Error GoTo
ありましたね。そういう命令。VB使っていた頃もあまり使った記憶無いですが...
でも実際は必要性高いでしょうから、まだまだGOTOは使われているって事ですね。

これも今風? の言語では
try catchですからね。
Posted by ルーパス齊藤 at 2007年08月21日 11:09
そほ3さん

コメントありがとうございます。

> On Error GoTo は、別コマンドといえますから

そうなんだ。
まあ、これはこれでありですけどね。


ルーパス齊藤さん

コメントありがとうございます。

そう、あったんですよ。
あまりGoTo文という意識はありませんけどね。
Posted by Hibi at 2007年08月21日 16:26
削除
実はよく使用されている「GoTo文」