Baru-baru ini saya menemukan jawaban yang bagus untuk pertanyaan saya di "Kode Bersih" Paman Bob, yang ingin saya bagikan. Dia membedakan tiga jenis duplikasi
Potongan-potongan kode identik harus diganti dengan metode tunggal. Jadi perbaikannya adalah mengekstraksi metode dan mendelegasikan ke perilaku umum.
- dalam metode yang sama, lakukan Ekstrak Variabel Lokal dan gunakan kembali.
- di kelas yang sama melakukan refactoring Metode Ekstrak.
- di kelas dengan metode Ekstrak hierarki yang sama dan Tarik ke Atas. Hierarki dapat dibuat untuk menemukan tempat untuk metode.
- di kelas hierarki terpisah gunakan delegasi ke objek baru.
- Jika metode tidak memerlukan keadaan penutup, maka pola "lib" mungkin diterapkan (itu adalah wadah untuk metode statis, biasanya disebut
SthUtil
atau SthLib
).
kasus switch/case
dan if/else
itu selalu menguji untuk set kondisi yang sama .
- Ini harus diganti dengan polimorfisme.
Modul yang menerapkan algoritma serupa . Ini paling sulit ditemukan, karena tidak ada detektor klon yang dapat menemukannya.
- Karena ruang lingkupnya desain patters lebih besar digunakan. Pola desain Metode Templat dapat diterapkan untuk algoritma di dalam hierarki kelas.
- Pola desain strategi dapat diterapkan untuk algoritma apa pun yang digunakan di tempat yang berbeda.
Juga poin yang valid disebutkan oleh Oded, ketika berhadapan dengan berbagai versi perpustakaan
- berkonsolidasi pada satu versi. Pola desain fasad mungkin membantu di sini.
Pada akhirnya satu kalimat terbaik untuk menjawab pertanyaan saya adalah dengan rangsangan:
metode penggunaan kembali kode yang digunakan dalam bahasa OO adalah objek.