定数に関する個人的考察
- ふと定数ってどういう時に使うものだっけ?と思ったのでまとめてみる
定数とは何か?
- 定義してから変わらない(数年単位であれば変わりうるもの)
- ex1. 円周率(3.14 => 3とかゆとり乙で話題になったアレ)
- ex2. キャップ(上限値)、ゲーム等でユーザの成長に伴い拡張せざるをえないもの
- type(年に1,2回程度、多くても4半期、の追加がある)
- (主に)数字に対するエイリアス
今回、どうしてこんなことを考えたのか?
- 月次で修正/追加のかかる定数を見つけた
- ????
- それ、定数にすべきじゃないよね?
- なお、DBから取得出来る模様
- QPSを増やしたくないとか?
- ローカルホストのメモリに乗せる方法なんて、どの言語でも豊富にあると思うんだがどうして定数を選んだ?
なぜ、定数にすべきでないか?
- 定数はプログラムの一部である(デプロイの手間がかかる)
- エンジニアの仕事の基本は『マニュアルさえ渡して、時間を与えれば誰にでも出来る簡単なお仕事をコンピュータにさせること』
- 何のためにプログラム書いてるか自問してみよう?
- 定数のデプロイは常にプログラムの改編に繋がることを意識してもらいたい
- デプロイ等に対するリテラシーとか政治的なアレの作用とか反作用とか知らんし、単にムダな工数を積んでるだけ。
個人的に定数にすべきでないと思うもの
- 更新頻度が(比較的)高いもの
- 月次とかマスタで管理してもらいたい
- 日付、大体は記念日
- anniversaryとかいう英語もあるやろ?
- 管理者ID/NGなID
- なぜ、DBでマスタ管理しようと思わなかったのか
まとめ
- その定数、本当に必要?