auカブコム kabuステーション自動取引プログラムの作り方(4) モジュール間の値の受け渡しは、パラメータなんか使わず、グローバル変数に値をぶち込んでしまおう

スポンサーリンク

プログラミングの世界ではグローバル変数は避けるべきとされている

プログラムのどこからでも参照できる変数を一般的に「グローバル変数」といい、一般的なプログラミングにおいては、グローバル変数の多用は避けるべきと言われています。

その理由としては、グローバル変数は、プログラムのどこからでも参照できるが故に、プログラムが大きく複雑になり、何人もで協力して開発するようになってくると訳がわからなくなってくるからです。すなわち、

どこでその変数に値の設定をしているか分からなくなる

                     ↓

参照したとき、その変数には想定とは違う値が設定されているためバグる

というようなことが起こりやすいからです。

でも、個人で作るシステムトレードでは気にする必要なし

しかし、上記のような問題点は、逆に言えば、”複数人で” “大規模システムを” 開発しているからこそ起こることです。

個人で、小さなシステムトレードのプログラムを開発している場合には全く気にする必要がありません。

グローバル変数を使わないと遠くの関数に変数を伝播するのが大変

前の投稿で挙げたような例のプログラムの場合、グローバル変数を使わずにパラメータの受け渡しのみで、変数の値を伝播していこうとすると、以下の図のようになります。

このように、ずっと先の関数で使いたい変数の場合、途中の関数で何段階もにわたり変数を受け渡さなければならず、プログラミングに大変手間がかかります。

また、使いたい変数を追加したい場合などは、中間で変数を受け渡しているすべての関数に手が入ることになります。

グローバル変数をつかえば簡単に変数が受け渡せる

しかし、グローバル変数を使えば、以下のように簡単に変数の受け渡しが可能になります。

グローバル変数は、どこからでも値を設定でき、またどこからでも参照できるので、まるで1つのファイルの中で変数を扱っているように、フレキシブルに変数を扱うことができるのです。

Pythonでは公式ドキュメントでも割とグローバル変数の使用が勧められている

Pythonは、シンプルにコーディングできることを目指している言語なので、このようなグローバル変数の使用方法は、公式のFAQのドキュメントで普通に紹介されています。

プログラミング FAQ
目次: プログラミング FAQ- 一般的な質問- ブレークポイントやシングルステップ実行などを備えたソースコードレベルデバッガはありますか?, バグの発見や静的解析に役立つツールはありますか?, どうしたら Python スクリプトからスタンドアロンバイナリを作れますか?, Python プログラムのためのコーディング...

前の投稿の繰り返しになりますが、個人で作るシステムトレードは簡単に作れることが一番です。他のファイルでも使いそうな値は、一般的なプログラミングの常識など気にしないで、どんどんグローバル変数に突っ込んでしまいましょう。

コメント

  1. […] […]