- ベストアンサー
プログラムの手法について
プログラム初心者です。同僚の書いたVBAのプログラムを勉強のために見ていました。彼のプログラムは X=-1 関数1 ・・・・・関数の処理 X=1 関数1終 もしX=1じゃなければエラー処理へ。 もしX=1ならばプログラムは続く。 といった内容です。 関数直前で変数に値を持たして、関数脱出後にその変数が変わっていなければエラー処理へといった手法はよく使われるんでしょうか?自分はそんな処理の仕方をおもったことすらなかったので、そんな手法があるんだ。それって一般的なのかな?と思って質問させて頂きました。お願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
一つの関数内で起こったエラー状態を、その関数でのみ有効な変数(ローカル変数)で保持して制御する、というのはよくある手法です。 が、質問にあるようなものは#1でも言われている通り「関数の戻り値で制御する」のが普通です。 というかグローバル変数自体「滅多なことでは使わない」ように気をつける類のものですが。
その他の回答 (2)
- mpro-gram
- ベストアンサー率74% (170/228)
それは、変数にlocalとglobalの区別がなかったN88BASIC時代の書き方ですね。 N88BASICでは、関数1とあるのは単にひと塊のサブルーチン処理の開始点マーカーで、xを引数兼返値用の変数につかうので、処理構造がスパゲッティになりやすかったです。 いまでも、activeBasicというwindows上でN88BASICを動作させるアプリもあるけど。 関数構造が作れて、変数にlocalとglobalの区別がある言語ではあんまりまねしない方がいいと思います。
お礼
ありがとうございます!
- Wr5
- ベストアンサー率53% (2173/4061)
グローバル変数でエラー制御…なんてのは普通はやらない…かと。 # まぁ、WindowsのGetLastError()はある意味グローバル変数か…とも取れますが。 関数なのですから、戻り値とか使うのが一般的でしょう。 ネストされていたり、関数コールが深かったりするとグローバル変数では処理できないでしょう。
お礼
ご回答ありがとうございます!!
お礼
ご回答ありがとうございます!!