変数の扱い方って割と人それぞれなので今回はちょっとその辺りを考えてみようかと思います。
そもそも変数って??という方は当サイトの変数の回をご覧頂ければいいと思います。
が、そもそも変数って??という方はおそらく今回のブログ内容は何の足しにもならないかとは思います…
ちなみに今回は特殊な変数(public, static等)には触れないで進めていきます。
目次
宣言方法と場所
宣言をする方法と場所について考えてみます。
- プロシージャの最初でしか宣言しない
- プログラム中で宣言しつつ展開していく
- そもそも型を宣言しない
- カンマで続けて宣言する
僕の知る感じだとこんな感じですかね?
事例
実際に行った事例を挙げてみようかと思います。
こんな感じですね。もちろん結果は全て一緒です。
それぞれのメリット・デメリットを考えてみる
これはあくまでも僕的な見解なのですが…
1.プロシージャの最初でしか宣言しない
これが一般的ですかね。最初にコメントを添えて全て宣言しておくことにより説明書的な感じで読み進められますね。僕もこの手法でほとんど書いています。しかしその場でしか使わないような一時的な変数などもすべてここで宣言すると長いコード時にあの変数何だっけ?となった時にちょっと見返しにくくなります。
これが一般的ですかね。最初にコメントを添えて全て宣言しておくことにより説明書的な感じで読み進められますね。僕もこの手法でほとんど書いています。しかしその場でしか使わないような一時的な変数などもすべてここで宣言すると長いコード時にあの変数何だっけ?となった時にちょっと見返しにくくなります。
2.プログラム中で宣言しつつ展開していく
最近はこの手法の方が増えてきている気がします。他のプログラム言語をやると思うかも知れませんが、こっちの方が他の言語をやっている時にこっちの方が違和感がないかも知れません。そして、ワンポイントでしか使わないような変数はこのよう用いた方が使いやすく読みやすいコードになるかも知れません。割と最近僕は何度も使う変数と実際に処理に最重要な変は全てプロージャの上で宣言して一時的な変数はコードの中で展開するパターンが多いかもしれません。
最近はこの手法の方が増えてきている気がします。他のプログラム言語をやると思うかも知れませんが、こっちの方が他の言語をやっている時にこっちの方が違和感がないかも知れません。そして、ワンポイントでしか使わないような変数はこのよう用いた方が使いやすく読みやすいコードになるかも知れません。割と最近僕は何度も使う変数と実際に処理に最重要な変は全てプロージャの上で宣言して一時的な変数はコードの中で展開するパターンが多いかもしれません。
3.そもそも型を宣言しない
型を宣言しないのはちょっと抵抗があるかもしれませんが型の宣言をしないのは他のプログラム言語ではよくあります。しかし、VBAにおいては型の宣言をしなければ自動でVariant型として変化されてしまうため予期せぬデバッグを生んでしまうかも知れませんので大事な変数をこの様に使用するのは避けて、分類毎に分ける事によりもしかしたら可読性の高いコードが作れるかも知れないかとは考えています。
型を宣言しないのはちょっと抵抗があるかもしれませんが型の宣言をしないのは他のプログラム言語ではよくあります。しかし、VBAにおいては型の宣言をしなければ自動でVariant型として変化されてしまうため予期せぬデバッグを生んでしまうかも知れませんので大事な変数をこの様に使用するのは避けて、分類毎に分ける事によりもしかしたら可読性の高いコードが作れるかも知れないかとは考えています。
4.カンマで続けて宣言する
これは完全に好みによるのかも知れませんが、僕は可読性が一気に下がるので出来るだけ避けています。しかし、カウンタでしか使用しないiやj等はDim i As Long, j As Lonの様に宣言すると行数削減でいいかも知れません。また、分類毎に分ける事によりもしかしたら可読性の高いコードが作れるかも知れないかとは考えています。
これは完全に好みによるのかも知れませんが、僕は可読性が一気に下がるので出来るだけ避けています。しかし、カウンタでしか使用しないiやj等はDim i As Long, j As Lonの様に宣言すると行数削減でいいかも知れません。また、分類毎に分ける事によりもしかしたら可読性の高いコードが作れるかも知れないかとは考えています。
結果
この様に色々な手法があり、人によってはこの手法は邪道だとか古いだとか言われる事もあると思うのですが、それぞれ利点・欠点があるので可読性の高いコードを作りつつチャレンジするのがいいのではないかと思います。
後はチームで開発をしている場合はあくまでもチームのコーディングガイドラインに従って書いていく事は行わなければ自分だけで突っ走ってしまう事になりますので注意が必要ですね!