酒と煙草と○○

酒と煙草と珈琲と妻とミニチュアダックスとHM/HRをこよなく愛するIT戦士の記録

状態管理はフラグより値の書き換えで

経験上思うことがあったのでちょこっとエントリ。

切っても切れない状態管理 - Life is Really Short, Have Your Life!!

状態管理は、システムにとって非常に大事なものです。
切ることはできません。
切れないことを前提に取り組むのが一番いいです。(できあがるモノ的にも精神衛生的にも)


状態管理するなら、状態を保持するものを用意して値を変えていく方式が無難です。


フラグにすると、組み合わせが起きてしまって、思わぬバグを生みます。
単体試験をしても、つぶしきれないことがたまにあります。
最初はフラグ1つで済むだろうと思っていても、イレギュラーな状態になることがわかった段階でアウトです。
大抵はもう一つフラグを用意することにします。
すると、とたんに状態が4つになります。
すると、これを制御するコードが増えます。しかも半端じゃなく。
これが、また違う状態になるとわかると・・・わかりますね?2のn乗の数分、組み合わせが増えていきます。


値を書き換えていく方法だと、常に状態を表すのはひとつなので上記のような増え方はしません。
値をどう変えていくかや何桁にするかなど検討する必要はありますが、n乗の組み合わせが増えることはありません。


もちろん、値を書き換えていく方式が万能だとはいいません。
表現できない場合もあります。
その場合は、その値の時専用のフラグを用意して限定的に利用するといいです。


当然ですが、UMLでいう、アクティビティ、ステートチャート(ステートマシン図)、シーケンスを記述し分析、設計をするのは前提です。