プログラムの書き直しが生きてくる条件
最も重要なことはプログラムの品質向上に前向きな開発チームかどうかであると思います。プログラムを修正・検証・リリースというサイクルをうまく回すには、各自の技術力も重要ですが、何よりチーム内の協力体制が出来ているかということが重要です。もちろんコードを簡単に書き直していいわけではありません。しかし、コードをよくすることに理解が得られるチームのプログラムは、きっといいものになっていくはずです。
更地主義
ITproより:
何が言いたいかというと,アプリケーション開発者の多くが「最初から書き直す」ことを一番良いと信じていることを問題視しているのだ。最初からやり直せればもっとうまくできるだろうという考えが間違いであることは再三証明されてきた。
プログラマなら誰しもコードを書き直したいと思う衝動にかられたことがあるでしょう。その多くは実際に修正されることはありませんが、修正するしないの葛藤が続くこともあります。あなたなら、そんな時どうしますか!?
コードを書き直したくなる時
プログラマがコードを最初から書き直したいと思うのは、主に以下のような時です。
個人的に許せない(笑)
インデントがガタガタ。命名が意味不明。コーディング規則が統一されていない。コメントと内容が一致しない。
保守性が低い
同じようなロジックが複数個所ある。ハードコードされている部分が多数。修正による影響範囲が広い。Dead codeが多くあり、しかも削除していいかどうか分からない。外部仕様と内部仕様の境界があいまい。
設計がよくない
拡張が容易でない。多くの計算時間やメモリを使う。関数やメソッドなどが機能的に分類されていない。サンプルを見ないと使い方が分からない。
大体こんなところでしょうか。他にもいろいろあると思いますが、あなたならどんなところが気になりますか?
更地にするのは難しい
これらを1から書き直したくなる気持ちはよく分かります。しかし実際には大幅な修正は難しいのが現状です。上記記事にあるように予測できないバグを産むことが最も大きな理由の一つだと思います。その他ソースコード管理システムに本来の修正と違う変更が埋め込まれてしまうといった理由も。
しかし本音は余計なところを修正することで無用な責任を負いたくないということにあります。たとえ全て自分が書いたコードであったとしても、半年もすれば修正した理由を忘れてしまうでしょう。動いているコードをさわるのは勇気がいるものです。
書き直しを行う時に注意すること
コードの書き直しを行う時に心掛けることについて、私なりにまとめてみました。
利用者に関係ない書き直しは行わない
プログラムの利用者にとって影響のない書き直しはすべきではないと考えます。
書き直したいと思う理由の多くは「個人的な趣味」に帰結します。いかに設計が悪く、拡張性のないものであったとしても、それがユーザにメリットのあるものでない限り修正する意義は少ないでしょう。安定性が向上するとか処理速度が上がるとか、変更が目に見えるものであるべきでしょう。
変更後のテストは十分に
言うまでもないことですが、変更した部分のテストは十分に行いましょう。
一ラインの修正でも、場合によっては影響範囲が大きくなることがあります。ましてや多くのコードを変更する書き直しにおいては、たとえ外部インタフェースの少ないモジュールであっても、十分な検証を行いましょう。もしその時間が取れないようであれば、書き直しを行うべきではありません。
一人で変更しない
一人ではどうしても視野が狭くなりがちです。可能であれば複数の人にコードレビューをしてもらうとよいでしょう。コードだけでなく、検証する人も多いと安心です。
最も大切なのはチームの体制づくり
いろいろ書いてきましたが、実は最も重要なことはプログラムの品質向上に前向きな開発チームかどうかであると思います。
コードの書き直しに限らず、プログラムを変更した後の検証はなかなか大変です。思わぬバグを誘発してしまうことも珍しくありません。プログラムを修正・検証・リリースというサイクルをうまく回すには、各自の技術力も重要ですが、何よりチーム内の協力体制が出来ているかということが重要です。
プログラムのバグを0にすることは出来ません。よく「なぜこのバグがテストで見つからなかったのか」ということが問題になります。もちろん明らかなテストミスもありますが、大切なことはバグを出してしまったことより、バグをいかに迅速に解決するかだと思います。そのためには、日ごろからチームのバックアップ体制が出来ていなければなりません。
そのような体制があって初めてコードの書き直しは生きてくるのだと思うのです。もちろんコードを簡単に書き直していいわけではありません。しかし、コードをよくすることに理解が得られるチームのプログラムは、きっといいものになっていくはずです。
過去の関連記事:
プログラムは偶然で動く