わたしは、コピペ(コピー&ペースト)が嫌いです!(その1)

 
機能の似通ったプログラムを作る時、
「横展開」なる用語がつかわれている。
先に作った類似したプログラムを別ファイルにコピーして、
そのプログラムと、元のプログラムが負う機能の、
差異だけを書き直すという手法をさすらしい。

そもそも、「横展開」の意味が少なくともわたしの知ってるのと、全然違うんだけど…
まぁ、それは文化(?)の違いかも知れない。…ということにしておこう。

制御系、ことに相手がハードウェアの場合は、
今だってこんな、そら恐ろしいことはしないと思う…
速度の制約があれば、マクロ展開的な処置をさせるはずだし、
Javaだって、同等な対応は可能だもん…

閑話休題


今は、開発ツールで簡単にソースファイルの比較ができるので確認してみると、
各々3000行以上あるソースファイル(こんな行数あるだけで、既にめまいと吐き気がしてくる…)で、
なんと軽く80%以上の行のソースが一致しているのが、20本以上あるプロジェクトにお目にかかったことがある。

おまけに、1つのメソッドが200~300行に達してるのがゴロゴロある。
そのメソッドのうちの半分以上は、各ソースファイルに全く差異のない状態で存在している。

更には、差異が値(数値や文字列)だけ、つまり値をメソッドの引数にして渡してやれば、
1つのメソッドで済むものが、同じソースファイルの中に複数ある始末。
(それが複数のソースファイルごとにある訳だから…推してしるべし)