プログラマメモ2 - programmer no memo2

順序を変えて実行しても結果が一緒ということであれば 2008/03/02

ふと考えたこと。

こんな手順でコードを書いている。

まず処理をまとめる
a処理
b処理
c処理
※a,b,cとつけているだけでとくに意味はない。

で、このときに可能な限り順番に依存しないようにする。
どういうことかというと、
b処理を実行するためにはかならずa処理をしなければいけないということをなくすようにする。

あとは、効率のよくなるような処理のブロックの組み合わせになるようにする

自分のJavaのコーディングでの傾向は、すぐにユーティリティクラスを用意します。で、ユーティリティクラスはユーティリティメソッド(static)の集まり。
ユーティリティメソッドの組み合わせで、処理を行うようにしてます。

処理の組み合わせを決定するのにif文で場合分けをコードにどんどん埋め込まないように注意します。
呼び出しもとで分けるように努力します。

例えば(あくまでも例えですよ!!)
a();
b();
if(判定){
c();
} else {
d();
}

とはしないようにします。

if(判定){
パターン1
}else{
パターン2
}

パターン1
a();
b();
c();
パターン2
a();
b();
d();

って感じでするのが好きです。




ちなみに、フラグに1とか0の値を使うのは好きではないです。
flagA = 0;
flagB = 1;
でひとつの状態をあらわすような作りには決してしたくないです。
アドホックな感じがします。
このパターンを容認してしまうと、都合でどんどんflagXxxを追加してしまいます。
開発者が自分のその時の都合でフラグを追加するような仕組みはやめないとのちのち不幸になります。
フラグを追加するだけで、かけ算の状態を考慮しないといけなくなります。

flagA(0|1) x flagB(0|1|2) x flagC(0|1)
って感じで。
さらに嫌な感じになる可能性は、このフラグをみる順序が絡む場合です。
順序を考慮に入れることで、組み合わせの数が減るように感じますが、順序がコードを汚す原因になることもあります。

フラグを急遽入れて、その場をしのぐという方法は、あとからコードに手を入れないといけいときによく起きる感じがします。

こういったことが長く続くと、コードを捨ててバージョンをあげようという話になるのかもしれません。


stateごとに名前をつけて状態は管理したいです。

: