• ベストアンサー

プログラムの手法について

プログラム初心者です。同僚の書いたVBAのプログラムを勉強のために見ていました。彼のプログラムは X=-1 関数1 ・・・・・関数の処理 X=1 関数1終 もしX=1じゃなければエラー処理へ。 もしX=1ならばプログラムは続く。 といった内容です。 関数直前で変数に値を持たして、関数脱出後にその変数が変わっていなければエラー処理へといった手法はよく使われるんでしょうか?自分はそんな処理の仕方をおもったことすらなかったので、そんな手法があるんだ。それって一般的なのかな?と思って質問させて頂きました。お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.2

一つの関数内で起こったエラー状態を、その関数でのみ有効な変数(ローカル変数)で保持して制御する、というのはよくある手法です。 が、質問にあるようなものは#1でも言われている通り「関数の戻り値で制御する」のが普通です。 というかグローバル変数自体「滅多なことでは使わない」ように気をつける類のものですが。

mellow91
質問者

お礼

ご回答ありがとうございます!!

その他の回答 (2)

  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.3

それは、変数にlocalとglobalの区別がなかったN88BASIC時代の書き方ですね。 N88BASICでは、関数1とあるのは単にひと塊のサブルーチン処理の開始点マーカーで、xを引数兼返値用の変数につかうので、処理構造がスパゲッティになりやすかったです。 いまでも、activeBasicというwindows上でN88BASICを動作させるアプリもあるけど。 関数構造が作れて、変数にlocalとglobalの区別がある言語ではあんまりまねしない方がいいと思います。

mellow91
質問者

お礼

ありがとうございます!

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

グローバル変数でエラー制御…なんてのは普通はやらない…かと。 # まぁ、WindowsのGetLastError()はある意味グローバル変数か…とも取れますが。 関数なのですから、戻り値とか使うのが一般的でしょう。 ネストされていたり、関数コールが深かったりするとグローバル変数では処理できないでしょう。

mellow91
質問者

お礼

ご回答ありがとうございます!!

関連するQ&A