あなたが,Userモデル(またはUserテーブル)に,アカウント停止機能を追加するとして,その状態をもつフィールド名はどれにしますか?
- suspended_at (datetime型)
- is_suspended (bool型)
- is_active (bool型)
- suspended_from (datetime型)
要件によって,変わるだろうというのはそうなんですけど,実務の場合は,要件はアカウント停止機能としか決まってないことはざらにありますし,じゃあ,関係者をわざわざあつめて要件定義を行う機能サイズでもない.
そうなると,フィールド名をどうするかというのは,そのときコードを書く人に一任されてしまうんですよね.
suspended_at
代表的なORM(例えばRailsのActiveRecord)の場合,created_atとupdated_atが,モデル標準のフィールドとして自動定義されているので,そこからの横並びだと,素朴に名づけるフィールド名.
アカウントが停止から復帰した場合,このフィールドの値はどうなるのだろうという疑問がわいてくる.
システム運用上,停止日時を知りたいということはそんなに多くない気がする.
is_suspended
非常に素直なフィールド名,停止しているならTrue,停止していないならFalse.
is_active
なんて天邪鬼なんだろうかと思っちゃう.値がnullだったら,停止しているのだろうか.
suspended_from
アカウントにはライセンス期限があったりするので,運用上使いやすい.でもアカウント停止機能というキーワードだけですぐ思いつくかというと微妙.
名付けは関連の実装に影響を与える
先にモデルをつくったときに,同僚がフィールド名をみて何を考えるのかというのが変わってくる.
is_suspendedやis_activeならUIは自然とスイッチになるだろうし,suspended_fromならカレンダーになると思う.
そう思うとsuspended_atは同僚に対してどのような実装をすればいいか悩ませてしまう余地があるのでいい実装じゃないかも.