私の要点を明確にするためにあなたを間違って引用させてください:
他の関数を呼び出す関数をいくつか書いています。情報を渡すには、2つの選択肢があります。
- 情報を引数として渡します。
- グローバル変数を使用します。
どちらのオプションをいつ選択すればよいですか?
一般に、非ローカルな状態は悪い考えであると認識されています。したがって、一般に、共通のスコープ内の変数ではなく、パラメーターを使用して情報を渡す必要があります。これは、関連情報をオブジェクトまたは構造体にグループ化すると、より管理しやすくなります。
あまりにも多くのパラメータを渡すことで、コードのにおい、そしておそらくさらにいくつかのクラスを使用するようにリファクタリングすることができます。あなたがアドレス帳を書いていて、メソッドを持っているという病理的なケースを想定してくださいadd_contact(surname, firstname, fullname, ...)
。Name
住所の一部と同様に、それをクラスにグループ化することをお勧めしますadd_contact(name, address)
。
ただし、関数に必要なパラメーターがまったく無関係である場合は、メソッドがやりすぎている可能性があり、小さな部分にリファクタリングする必要があります。
インスタンス変数を使用することは良い解決策だとは思いません。それは状態の不必要な変更であり、グローバル変数のすべての問題を小規模にもたらします。この方法は、デバッグ不可能なスパゲッティコードです。