ある文脈時に、変数がとりうる値から状態を決めたいわけです
2009/01/29
2009/01/30
アイデアレベル
ある状態のときにある動作をするプログラムを書くときに、
実装者に条件判定(if)を書欠かせないようにしたい。
とくにif文がネストするようなコードを書かせたくない(書きたくない)。
if(){
if(){
if(){
}
}
} else {
if(){
} else {
}
}
if(){
if(){
}
}
} else {
if(){
} else {
}
}
こういったコードになりがちなのはアプリケーションのもつ状態を把握していないときにおこると思います。
状態を把握していない場合、実装者が自分に都合のよいフラグを安易に(やむにやまれず)導入したりします。
アプリケーションは、《ある条件のときにある処理を実行してよい》、の積み重ねと考えると、ある条件を、
抽出する方法を簡単に(一目で把握)できないかなと。
アプリケーションのもつ状態をアプリケーションがもつ変数のその瞬間時の組み合わせとするなら、
状態を表にできるかなと考えたわけです。
これは僕の以前からずーともっているテーマなのですが、これをうまく表現するための方法がないかな。
ある文脈時に、変数がとりうる値から状態を決めたいわけです。
アイデアレベル
/* 文脈 abcWindow */
CONTEXT:abcWindow
/* 変数から状態を決定 */
STATE(name:ST_1): a:true, b:false, c:3, d:visible
STATE(name:ST_2):STS_1, e:false
STATE(name:ST_3):STS_2, e:true
STATE(name:ST_4):a:true, b:false, c:3, d:not visible, e:true
/* 変数の取得方法 */
VALUE(name=a):{
}
VALUE(name=b):{
}
VALUE(name=c):{
}
VALUE(name=d):{
}
VALUE(name=e):{
}
CONTEXT:abcWindow
/* 変数から状態を決定 */
STATE(name:ST_1): a:true, b:false, c:3, d:visible
STATE(name:ST_2):STS_1, e:false
STATE(name:ST_3):STS_2, e:true
STATE(name:ST_4):a:true, b:false, c:3, d:not visible, e:true
/* 変数の取得方法 */
VALUE(name=a):{
}
VALUE(name=b):{
}
VALUE(name=c):{
}
VALUE(name=d):{
}
VALUE(name=e):{
}
: