追っ手から逃れるシステム

小さい簡単なシステムでも、工夫次第で追っ手から逃れることができるという良い例が目の前にある。
とりあえず、手法として取り入れやすいものをあげておこう。

ドキュメントは残さない
基本です。手がかりを与えてはいけません。
ドキュメントにうそを混ぜる
契約上ドキュメントを作らざるを得ない場合、実際とは違う記述を織り交ぜておきましょう。その場合でも、全体像がわかるようなドキュメントは書かないこと。
単純な処理でもテンプレートメソッドパターンなどを使って複数のクラスに分散させる
複数のクラスを見る必要があるため見通しがわるくなり追っ手から逃げやすくなる。さらに、一部の変更がどこに影響があるかわかりにくくなるため、変更も行いにくくするという効果がある。
ちょっとした処理は15行ルールの名の下、メソッドを分割する
このとき別のクラスにメソッドを置くようにすると、さらに効果的。上から下に順に読めばいいようにしてしまうと、すぐに把握されて修正変更やりやすくなってしまう。ただし、センスがないと逆に見やすく追いやすくなってしまう。
似たようなパッケージを複数作って似たような処理を分散させる
ある処理がどのパッケージのどのクラスに書かれているかわかりにくくすることで追っての目をくらますことができる。
データベースの機能は使わない
シーケンスや制約などのデータベースの機能を使わず、名前の一致でデータを関連させたり、プログラム中で連番を振ったりすることで、データ構造が把握されてしまうことを防ぐことができます。
区分などはコード中に持たせる
区分コードの意味を把握しづらくして、データの種類が把握されてしまうことを防ぎます。定数を定義する場合は、なるべくその定数を使わないことでいっそう追っ手の追及から逃れやすくなります。
手法は複数組み合わせると効果が大きい
これらの手法を組み合わせることによって、「なんとなく関係ありそうなところをいじったら修正ができた」とか「なんとなく追ってたら全体が把握できた」などという甘ったれた姿勢のプログラマを遠ざけることができます。ソースコードのすべてを一字一句読まなければ変更できないようにすることで、システムに精通した強いプログラマにしかさわれないようにするのです。こうしてシステムを変更や修正から守ることができます。あなたが作ったオリジナルのプログラムが保ち続けられるのです。

こういう工夫を自然にやれるところにセンスを感じます。泣きそう。