flgとは?考察

Read More




今日、とあるDBテーブルの定義書を更新していたのだが、
その最中におかしなことに気が付いた。


err_flgという名前の付いたカラムがある。


このerr_flg、その名前にフラグとついているくせに
指定できる値はなぜか12だった。










はぁーーーーーん???






なんで1と2なんだよ。





flgって言うのはフラッグ(flag)省略形で、
その意味するものはだ。


コンピュータでいう0と1、つまりOFFとONのことで、
プログラムやDB的に考えると、
・旗が立っているから×××の処理を行う。
・旗が立っていないから△△△をしない。
ということになるわけで、
なぜここに2などという数字が入ってくるのか。


2という値を使うならflgという名前を付けるな。
flgと名付ける以上は0と1以外の値を使うな!


こーゆーの作った人がアホなのか、
あるいはカスタマイズしていって結果的にそうなったのか。


カスタマイズの結果だとしたら半分はしょーがないと思うが、
もう半分は先を見越せよとも思う。



あと似たようなところで、
プログラムなどでも$err_flgという変数名を付けたりすることがあるが、
ここでもよくに使われていることがある。


間違った使い方の例としては、
・$err_flg=1 であるときに正常として処理が進む
・$err_flg=0 であるときに異常として扱う


こういうプログラムに出会うとカリっとするけど、
人が組んだものだから気にしないように、極力心に溜めないように努める。




自分はこうならないようにと改めて戒めることとする。







--
おまけ



先述したテーブルだが、
1つのテーブル内にflgという名前が付くカラムが78個もあった。
これ、1つのテーブルの中にだよ?



自分は若いころDBにflgは多用するなと教わった。


それは、定義書なり資料なりがしっかり残っているのならいいのだが、
後から触る人にとってフラグというのは非常にわかりづらいものになるからだ。

ましてやその範囲が0と1以外にまで及んでいたりするとほんとにカオス
プログラムを端から端まで舐めまわす羽目になる。


ではフラグを使わないとはどういうことか。


プログラム的な解決方法で言えば、
フラグの代わりに「値が入っているかどうか」などという条件で判断する。

無駄なフラグを一つでも減らすよう努力がいる。



DBにフラグは極力使わず、使う場合はわかりやすい名前を付け、加えてしっかりと資料を残す。
基本すな。







Comments(2)

1  みやび  2014/11/10 (月) 19:22 ID:hqLPuCy35
今の現場はリーダーが変数名なんかの名前はかなり拘って管理してくれてるのでかなり纏まってます。
舐めた書き方すると
「ちょっとコレを日本語訳してみろよ、○○旗?なんの事かさっぱりわからんわ」

なんでもそうですけど、名前は重要なので、
命名は時間かけてしっかりという意識を浸透させなきゃダメですね

2  シラサヤ  2014/11/13 (木) 18:12 ID:4FpTvgr15
会社として命名規則の資料があったらいいね
それに準拠するようにやれば力つくしね
どの言語でも応用きくし


あと自分より上の実力持った人と仕事一緒にするのがいろんな意味で勉強になるね