どんな問題?
- 似たコードが散見されること
- 先行例を少し改変して再利用すること
- line countの指標的には良い
- 短期的には成功できる
症状
- 同じ類のバグが散見される
- 同じ類のバグを全て治すのは難しい
- 全体の生産性に寄与しないコードが増えていく
- コードレビューとインスペクションが不必要に増える
- コードがあまり考えられずに再利用されている
原因
- 再利用可能なコードをつくるのが大変であること
- 短期的な成果が求められる環境
- ソフトモジュールの文脈や意図がコードに現れていないこと
- 抽象化がなされないこと
- オブジェクト指向設計の理解が乏しいこと
- 継承
- 集約
- オブジェクト指向設計の理解が乏しいこと
- コードの設計が文書化されないこと
- 先の見通しが立てられずに開発が進んでいくこと
- 技術やツールに疎いこと
どう解決する?
複製はホワイトボックスな再利用となる
ブラックボックスな再利用では利点と欠点が異なる