2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

助けて!名付けは難しい,suspended_atはやめとけ.

Posted at

あなたが,Userモデル(またはUserテーブル)に,アカウント停止機能を追加するとして,その状態をもつフィールド名はどれにしますか?

  1. suspended_at (datetime型)
  2. is_suspended (bool型)
  3. is_active (bool型)
  4. suspended_from (datetime型)

要件によって,変わるだろうというのはそうなんですけど,実務の場合は,要件はアカウント停止機能としか決まってないことはざらにありますし,じゃあ,関係者をわざわざあつめて要件定義を行う機能サイズでもない.
そうなると,フィールド名をどうするかというのは,そのときコードを書く人に一任されてしまうんですよね.

suspended_at

代表的なORM(例えばRailsのActiveRecord)の場合,created_atとupdated_atが,モデル標準のフィールドとして自動定義されているので,そこからの横並びだと,素朴に名づけるフィールド名.
アカウントが停止から復帰した場合,このフィールドの値はどうなるのだろうという疑問がわいてくる.
システム運用上,停止日時を知りたいということはそんなに多くない気がする.

is_suspended

非常に素直なフィールド名,停止しているならTrue,停止していないならFalse.

is_active

なんて天邪鬼なんだろうかと思っちゃう.値がnullだったら,停止しているのだろうか.

suspended_from

アカウントにはライセンス期限があったりするので,運用上使いやすい.でもアカウント停止機能というキーワードだけですぐ思いつくかというと微妙.

名付けは関連の実装に影響を与える

先にモデルをつくったときに,同僚がフィールド名をみて何を考えるのかというのが変わってくる.
is_suspendedis_activeならUIは自然とスイッチになるだろうし,suspended_fromならカレンダーになると思う.
そう思うとsuspended_atは同僚に対してどのような実装をすればいいか悩ませてしまう余地があるのでいい実装じゃないかも.

2
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?