ソフトウェアメンテナンスのアンチパターン

名前:
追加機能パスの離陸

概要:
追加機能を機能の新規開発とみなし、既存コードとは独立した大量の新規コードを書くことで対応する。結果として、重複コード、文脈依存のコードなどができる。

エピソード:
「よし、ここからパスを分けて..」
「このパスを通った場合はこのポインタをNULLにすることにしよう」

解説:
既存コードでよく目撃されるアドホックな方法。
背景には、既存コードを変更することへの極端な恐れか、
単純に既存コードの理解が足りないことがあげられる。

開発手順として、既存コードから「コードを離陸(分岐)」させ、
新しいコードを書く土台を作る。
その後「新規コード」を独自につくり、
既存コードの適当な場所へ「着陸(合流)」させる。

大きな問題点は2つ。
・コードの重複が起こる可能性が極めて高く、重複しなくてもよく似たコードがたくさんできること。
・離陸はたいていの場合問題ないが、着陸はほぼ失敗すること。そのときに「おんぼろ煙突」アンチパターンが適用されると、着陸地点付近のコードを適当にいじってつじつまを合わせることになる。ここで作成されたコードは、既存コードの文脈と新規コードの文脈に強く依存したものとなり、後のメンテが不可能になる。


回避策:
・改修前に既存コードをよく読み、分析すること
・既存コードへの合流点に特に気を使うこと
・既存コードの(適度な)変更を恐れないこと