定数を宣言する意味 への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 るきお  (社会人) 投稿日時 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%になったころからほとんどのシステムがそのように管理しているようですが、昨今消費税増税の話もちらほら出ているので、ようやくその仕掛けが日の目を見そうです。
投稿者 お名前  (社会人) 投稿日時 2011/9/18 15:56:22
Visual Basic 中学校では「消費税」などの決まりきった普遍の数値を「定数」として宣言することを推奨していますがわざわざ「Const」修飾子を使って定数宣言する必要はあるのですが?

普通に 
Dim TAX As Long = 0.05 //消費税
のようにしてはいけないのですか?
(いけないことはないと思いますが、何故わざわざConstが推奨されるのでしょうか)