はじめに
ソースコードの可読性をよくするために、コードを入れ替えたり、移動したりすると、途端に動作しなくなることはよくあります。
うっかり、バックアップをとっていなかったために、元に戻すには大変な労力を要することもあります。ソースコードを大幅に変更する場合は、バックアップは必然ですが、自分専用のコードだと、つい、横着をしてしまいます。
プログラムコードはセンシティブ
当たり前といえば、そうかも知れません。わかっていても、失敗してしまいます。すべては、横着が原因です。ちょっとした変更なので、バックアップは取っていません。それが積み重なると大変なことになります。もとの状態に戻す作業が大変です。
一つの例として
ソースコードを整理しようとして、大きなブロック毎に、場所を入れ替えた時です。単に、入れ替えただけでは、動作しなくなりました。
原因は、変数の設定、参照のタイミングが合わなくなったことでした。
もとのコードでは、変数への設定が先に行われていました。そのため、参照するときには、値が設定されていました。
しかし、場所を移動したら、参照が先に来ていました。あり得ることと思えばそうなんですが、その時は、気が付きません。nullとか、undefinedエラーになります。
可読性をよくしようと、簡単に入れ替えたところ、それだけでは、済まなかったことです。
この設定、参照では、動作の順序をよく調べてからでないと、うかつには、移動できません。
変数だけではありません。クラス定義をして、そのクラスのインスタンスを生成するところでも、エラーが発生しました。これも、コードを入れ替えたことで、クラス定義の前に、クラスを参照する羽目になっていました。オブジェクトの定義でも同様です。
この設定、参照はコードのあらゆるところで、起こります。関数の参照に関しては、定義が後でも動作します。
感想
可読性をよくしようと、迂闊にコードを大幅に入れ替えたことが原因で、とんだ目にあいました。
しかも、バックアップを取っていなかったために、二重の災難に見舞われました。
コードの入れ替えはしたいが、迂闊にできないジレンマです。
これは、基になるコードに対して、都度の機能追加や、修正を繰り返していると起こりやすくなります。バグの修正を繰り返していると、コードが見づらくなりがちです。変数なども深く考えずに追加してしまいます。それが重なると、見づらいコードになってしまいます。
こういう時に、コードを整理しようとして、このわなにはまってしまいます。
気を付けたいと思います。
あとがき
ひとつのプログラムをメンテナンスしていると、機能追加や変更などの作業が続きます。小さな変更や大きな変更もあります。ちょっとした修正が思わない不具合につながることもよくあります。しかし、その不具合がすぐに表れないで、しばらくして発生することが多々あります。そういうケースが一番厄介です。どこの修正が原因だったのかが、わかりにくいためです。エラー原因の特定が難しいです。
ソースコードの整理には注意が必要です。