インスタンス変数の変更は関数の途中でしてはいけない
class Xxxx {
var m_hoge; // 状態を表すメソッドだったりする
・・・
function(){
m_hoge = a;
~いろんな処理~
m_hoge = xx1;
~いろんな処理~
m_hoge = xx2;
}
・・・
}
インスタンス変数がメソッドの「先頭と途中」もしくは「途中と最後」に
変更している処理を見たことはありませんか?
結構経験値が多いプログラマでも普通にやっている事が多い処理なんですが、
このようなコードはバグを呼びやすい、完成度が落ちるコードです
__推奨されないコードパターン__というやつですね
変数の意味が不正確になる
function(){
~いろんな処理~
xxLabel1->setText(m_nowHp); // ※1
~いろんな処理~
m_nowHp = a; // ※3
~いろんな処理~
xxLabel2->setText(m_nowHp); // ※2
}
このように変数名を書けば分かりやすいと思う
1と2の行だけを見れば、
どちらも同じように
「“nowHp(現在のHP)”をテキスト描画する」処理と読めるはずです
しかし3のところでnowHp(現在のHP)を書き換えている処理が存在しているということは、
__1の現在のHPと3の現在のHPは、同一ではない__ということになります
これは、
3の処理を読み飛ばしてしまうと
1と3の違いに気が付けない
という現象が発生するということ
ここから高い確率で新しいバグが発生してきます
厳密に正しい変数名を
function(){
var preHp = m_nowHp;
m_nowHp = a;
~いろんな処理~
xxLabel1->setText(m_nowHp);
~いろんな処理~
~いろんな処理~
xxLabel2->setText(m_nowHp);
}
インスタンス変数は__関数の先頭か最後__でのみ書き換え、関数内のメイン処理中は意味が変わらないようにする
上記以外のタイミングでクラス変数を書き換えると、厳密に正しい変数名ではなくなる
それでも値が欲しいなら、
__一時変数に値をコピー__しておくことで__厳密に正しい変数名を維持__すべきである