プログラムに関してGOODな作戦だと思っていることで
「相対的より絶対的」
というのがある。
今回の記事はこれをうまく説明するのがテーマ。
/////
1.デバッグ過程
A.正方形sをx軸に+10移動させて置け();
B.正方形sを座標(20,30)に置け();
Bの方がやるべきことがより明確だ。Bの命令を受けた後、正方形sが座標(20,30)に置かれてなければ、命令が遂行されていないことになる。(=バグ)
Aの方は、正方形が座標(20,30)にあっても元の位置を命令がちゃんと遂行されたかどうかが瞬間にはわかりにくい。
2.変数名まで工夫して
整数を一旦100倍して精度を増やしてある計算(例えば平均をとるようなもの)し、また100分の1して戻す。
int func(int a,int b)
{
a = a*100;
b = b*100;
int c = calc_foo(a,b);
c = (c+50)/100; // 本題とは関係ないが四捨五入
return(c);
}
int func2(int a,int b)
{
int a_h = a*100;
int b_h = b*100;
int c_h = calc_foo(a,b);
int c = (c_h +50)/100; // 本題とは関係ないが四捨五入
return(c);
}
func1もfunc2もやってることは同じである。
ただし、func2の方の ?_hという変数群には100倍した値が入っている。そうでない場合はもとのままの値が入っているというのが明解である。
3.複雑になった場合
1.も2.も簡単な場合を例示しているので、「どっちでもいいじゃん」とみる向きもあると思う。
がしかし、実際のプログラムはもっともっと複雑になるのでこの「相対的より絶対的」 に持つ方法が利いてくる。
つまり、ソースをちろっと見たときに
「この値はどっちのBを表してるの~~~~~」とならずに
「これはBの値を100倍した値だよな」とわかるわけ。
/////
どんどん、複雑になりがちなプログラムをいくらかでも風通しをよくしていかないとということ。変数や関数やクラスの持つ意味をはっきりさせることの一環。