時には視点を変えて見てみよう 
2011/06/03, 02:00 - IT
思いっきりシステム開発の話ですが・・

例えば、ユーザの性別をデータベースに格納する際には、
男性は1、女性は2で登録する。といった具合です。

でもこのままコード値をプログラム中に書いてしまうと、
プログラムの可読性がすんごく悪くなってしまいます。

「ふむ。性別が"1"のデータを登録しているのか・・で"1"ってなんじゃ?」

てな具合です。

主に、こういうコードの可読性の低下を防ぐ目的で、
このコード値(1,2)に分かり易い名前を付けるのが「定数化」というやつです。

例えば、

MAN = "1"、WOMAN = "2" といった具合に定数化すると、

「ふむ。性別に MAN(つまり男性) のデータを登録しているんだな」と
見やすいプログラムになります。

定数化の利点は、可読性が挙がる他にも、
コード値の内容が変わったときに個々のプログラムを修正する必要がないという利点があります。

例えば、男性 = 10、女性 = 20 というコード値に変えましょう!となった時に、
定数の内容を MAN = "10"、WOMAN = "20" に変えるだけで、個々のプログラムには
何も手を入れる必要がないという事です。


でも、たまーにですが、こんな定数化をしているプログラムに出会う事があります。

ZERO = 0、ONE = 1

・・意味なくね?コード値と同じ内容の定数名って。。

これだと先に挙げた利点は全く享受できません。
まず、可読性もなにも 0 は 0 でしょ?
あと、ZEROのコード値が10に変わるなんてありえません!というか変えれば逆に混乱します。
0を登録したつもりが10を登録していた・・なんてシャレになんないです。

で、よくみるのがメッセージコードなんかで、これをやっちゃうパターン。

MSG001 = "MSG001"

まず、可読性の利点がないのは一目瞭然です。
MSG001のコード値が "MSG002" に変わるなんて事もありえない!
果てしなく意味がない・・と、つい最近までそう思っていました。

でも、eclipse などのIDE(統合開発環境)を使用するのが当たり前な現在では、
意味があるのかもしれない。と思いはじめてきました。

例えば

MSG001 を使用するのをやめて MSG100 を使用しましょう。となった場合、
MSG001 という定数自体を削除すれば、影響のあるプログラムがすぐにわかります。
さらに MSG001 を MSG0001 とコーディングミスする事もなくなります。
間違いはIDEが教えてくれるので。

という利点も、場合によってはあるのかなー。と思ったりなんかしちゃったりします。

てゆーか

FILE_NOT_FOUND = "MSG001" て感じで適切な定数化がされていれば
こんな余計な事を考えなくて済むんですけど。

長々と書いた挙句になんですが・・

ついでに

僕の単価 = XXXX円 という定数の内容はいつ変わるんでしょーか。。
というか変数にしてください。m(_ _)m
どうか。なにとぞ。

あと列挙型ってプロジェクトでまだ使った事がないんですが
なんで使わないんですかね?



戻る