次の記事
前の記事

開発言語習得のススメ6日目 定数について

プログラムを書く上で、別になくても作れるんだけど使った方がいいものの一つが「定数」です。
コードの中では様々な値を使います。例えば「ボタンを押した際にキャラクターが移動する」処理を作る場合に
「もし←ボタンが押されたら10pixだけ左にキャラが動く」という処理を書いたとします。
同じように→ボタンを押したときの処理を書いた場合、こちらでも10という数字を使うと思います。
ここまではまあいいです。
問題は、ここで「やっぱり10pixでは移動量が多すぎるので3pixにしよう!」と思った場合です。
10という数字をすべて3に置き換えていってもいいのですが、数が増えてくると確実に修正が漏れます。
それにあまりにもめんどくさいです。
そこで、「定数」というものを使います。
まあ、書き方もいろいろあるのですが、とりあえず10という値を直接使うのではなく、10という値を代入した変数を使う。
と考えておけばいいです。
ようはプログラム内に「10」をばらまくのではなく「10」を入れた変数をばらまきます。
そうしておくと、やっぱり2にしたいとか、15か?とかの変更のさいにその変数に10をセットしているところだけを修正すれば
他のところに手を入れる必要がなくなります。
小さなプログラムを書いているときにはあまり恩恵は感じられませんが、デカいプログラムを書き始めると必ず必要になります。

と、ここまで書くと、察しの悪い人は「なるほど!プログラム内の数字はすべて定数にセットすればいいのか!」とか考えて
定数だらけにしてしまうことがあります。
そしてさらに質の悪い人はこんな定数を作る人がいます。

int teisuu1 = 1;
int teisuu2 = 2;
int teisuu3 = 3;
int teisuu100 = 100;

そしてこんな風に使います。

rate = a / teisuu100;

こういう発想に至る人はこの業界は向いていないので別のところへ向かった方がいいです。プログラムが読みにくくなるだけです。
実際の現場で100まで定義した馬鹿者を見たことがあります。

定数というのはあくまでも、何らかの意味のある値で、複数個所で使い、変更する可能性があるものに使います。
%を求めるときに100で割る計算をするときに、その100は定数にする必要はありません!
世界の物理法則が変わらない限り100で割らずに98にすることはあり得ません。

なので

int stepX = 10;   // X方向への一回の移動量
int stepY = 10;   // Y方向への一回の移動量
int stepZ = 10;   // Z方向への一回の移動量

こんなのならいいです。(まあ、constをつけろとか、大文字にしろとかいろいろありますが、とりあえずこんな感じで最初は十分です。)


コメント