無精で短気で傲慢なプログラマ

UNIX や web やプログラムの技術的なことを中心に。

「flag」について悩む

2ch プログラマ板の DB 関連のスレッドで (どのスレかは忘れた)、
 「hoge_flag という項目名をつけるのであれば、とりうる値は 2種類で
  あるべき。flag は旗なんだから、上げるか下げるかのどちらかだ」
という趣旨の書き込みを見たことがある。

そのときは何となく納得して、2値の場合は hoge_flag、3値以上の場合は
hoge_code や hoge_type などと命名するようにしたが、本当に旗は上げるか
下げるかのどちらかなのだろうか。

たとえば手旗信号は
 - 真上に上げる
 - 斜め上 45度
 - 水平
 - 斜め下 45度
 - 真下に下げる
の 5種類あるように見える。

参考: 手旗信号

しかし「flag bit」という言葉もある。「flag bit」なら 2値限定、「flag」
なら 3値以上もアリ、なのだろうか。


とりあえず、仮に「2値なら hoge_flag、3値以上は hoge_code・hoge_type」と
いうルールを決めたとする。しかし最初は 2値であると思っていたが、後になって
考えると 3値以上を割り当てたくなるというのはよくある話。

ということは、最初から hoge_flag という名前を使わない方がよいのだろうか。

あるいは 3値以上になった場合、項目名を改名するのがよいだろうか。その場合、
DB 設計書・プログラム設計書・プログラム・DBのカラム名・関連する全 SQL の
すべてを改修する必要がある。はたしてそれだけの労力を費やす価値があるのだろうか。

…と、この 3年ほど項目名を決めるたびに悩んでいるような気がします。
スポンサーサイト

PageTop

コメント


管理者にだけ表示を許可する
 

名前というより、データ型をBOOLEAN NOT NULLにしたら、2値ということでいいんでないでしょうか。そうでなければ、2値以外もありえる、たとえそのときは選択肢が2つしかなくとも、設計者は増える可能性を考えていた(仕様変更含め)、という認識で、データ型重視で。もちろん、『is_admin』なんて項目に、「管理者/保守ユーザ/一般ユーザ」なんて値が設定可能だったら、「なんでそんな名前やねん!」となりますが、それは単に設計者のセンスが悪かったのだと割り切ればいいんでないでしょうか。まあ、どっちにしても、なにをBOOLEANにするか?迷いどころなので、問題は解決できていないのですが、BOOLEANにしちゃったら、もう小手先の変更では取り返しがつかないというプレッシャーがあるので、よく考えた上でそうなっているはずだと、名前より重要な位置づけで考えられると思います。

nagadomi | URL | 2005-10-14(Fri)14:48 [編集]


長くなったので、新たなエントリ
 http://68user.blog27.fc2.com/blog-entry-12.html
に書きました。

68user | URL | 2005-10-18(Tue)02:15 [編集]