定数を宣言する意味

タグの編集
投稿者 お名前  (社会人) 投稿日時 2011/9/18 15:56:22
Visual Basic 中学校では「消費税」などの決まりきった普遍の数値を「定数」として宣言することを推奨していますがわざわざ「Const」修飾子を使って定数宣言する必要はあるのですが?

普通に 
Dim TAX As Long = 0.05 //消費税
のようにしてはいけないのですか?
(いけないことはないと思いますが、何故わざわざConstが推奨されるのでしょうか)
投稿者 るきお  (社会人) 投稿日時 2011/9/18 18:49:52
こんにちは。

Dim TAX As Long = 0.05 //消費税
との比較とのことなので、定数か変数かということですね。
(本題ではないと思いますが、Longに0.05は代入できませんのでご注意を)

固定の値を表現する方法としてはやはり定数が優れています。
その理由は
1.定数は変数より若干パフォーマンスがよいことと
2.定数は値の変更が絶対にできないことです。


上述のようにTAXを変数とした場合、どこかで間違ってTAXに値を代入するプログラムを書いてしまうかもしれません。その結果、TAXがある時点から0.03になり計算結果がおかしくなるかもしれません。
一人でプログラムしていても気を付けなければいけませんが、チーム開発をしていると余計に気を使います。

もっとも、2に関してはReadOnlyで宣言すれば変数も基本的に読み取り専用にはできるのでこの点では定数に近い動作をさせることができます。

それから、これはどちらがいいか場合によると思いますが、
3.定数は共有メンバであるのに対し、変数はSharedをつけない限り非共有メンバである
という違いもあります。

なお、消費税に関しては税率が変わることがありえるので定数にしないでデータベースで管理することが多いです。消費税が5%になったころからほとんどのシステムがそのように管理しているようですが、昨今消費税増税の話もちらほら出ているので、ようやくその仕掛けが日の目を見そうです。