2008年 01月 15日

if ( flag == 1 || flag == 2) {

今日の日記はITの開発系の人以外は
読んでも意味がわかりませんと呪文を唱えてスタート。

先日、後輩くんが携わっている
プロジェクトのソースコードが視界に映った。

映った瞬間。。。

何じゃこりゃあああ!!!
と叫んでしまった。客先で。





if ( flag == 1 || flag == 2) {




漢。実に漢である。

このソースコードはたった1行である。
しかしツッコむ点は2つある。

1.flagという変数名はやめてくだしあ
2.1とか2じゃ意味がわからぬですぞ!

flagでは何のフラグかわからない。死亡フラグか?
1とか2ではそれが何なのかパッと見わからない。
わたしが書き直すなら、こうである。

int FLG_SHORI_KOSHIN = 1;
int FLG_SHORI_TOROKU = 2;

if(shoriMode == FLG_SHORI_KOSHIN || shoriMode== FLG_SHORI_TOROKU) {

変数名で「処理に関するモード」と主張し、
「更新処理」か「登録処理」を判定する、というのが
わかるようになった。

フラグというものを利用して処理を分岐させるのは、
ひとつの手ではあるのだが。。。

・本当にそのフラグは必要だろうか?(なしではできないのか?)
・フラグを使うなら変数名は適切だろうか?

そのあたりを考えて処理を記述しなければ、読むのに
苦労するコーディングになっていく。

後輩くんの名誉のために書いておくと、そのコーディングは
後輩くんではなく、別の人のコードである。

彼は。。。1-2年目の人だったかな。その時期はなー。。。
フラグ使っちゃう人多いんだよなー。

「状態」ではなく「処理」に関するフラグを多用するコードは、
たいていコーディングの設計が間違っている。
。。。とわたしの経験が勝手に物語っている。

生半可にコーディングはできるのだが、設計が正しくない。

自分が組んだコードに無理があるので、どうしても機能が
実装できない。仕様変更に弱い。それを回避するために
不要なフラグを追加して、無理やり処理を動かすのだね。

過去に見たソースで傑作だったのは6つくらいのフラグで
制御していたやつね。それ一週間後に見たら、
作った本人でもメンテできません。。。

さすがにそれは「フラグを減らしなさい」と叱りました。

フラグの彼は別のプロジェクトに旅立ってしまったため、
フラグについて教育をする暇がなかったのが残念である。





後日談。
後輩くんの首を絞めてソースはなおさせました。
[PR]

by netnetnet_78 | 2008-01-15 21:00 | 雑記


<< 桜庭一樹さんが直木賞受賞      三国志大戦3「長槍のエピソード」 >>