Kısa bir süre önce paylaşmak istediğim Bob Amca'nın "Temizlik Kodu" nda soruma iyi bir cevap buldum. Üç tür kopyalamayı ayırt eder
Aynı kod parçaları tek bir yöntemle değiştirilmelidir. Yani düzeltme yöntemi çıkarmak ve ortak davranışa delege olacaktır.
- aynı yöntemde, Yerel Değişkeni Çıkarın ve yeniden kullanın.
- aynı sınıfta Extract Method yeniden düzenleme gerçekleştirin.
- aynı hiyerarşi sınıfları ayıklayın ve yukarı çekin. Yöntemlere yer bulmak için bir hiyerarşi oluşturulabilir.
- ayrı hiyerarşiler sınıflarında yeni nesnelere temsilci seçme.
- Yöntemler herhangi bir kapalı duruma ihtiyaç duymuyorsa, "lib" deseni uygulanabilir (genellikle
SthUtil
veya olarak adlandırılan statik yöntemler için bir kaptır SthLib
).
vakaları switch/case
ve if/else
aynı durum söz konusu daima testi .
- Bunlar polimorfizm ile değiştirilmelidir.
Benzer algoritmaları uygulayan modüller . Bunları bulmak en zordur, çünkü hiçbir klon detektörü bunları bulamaz.
- Kapsam daha büyük olduğu için tasarım desenleri kullanılır. Şablon Yöntem tasarım deseni bir sınıf hiyerarşisindeki algoritmalar için uygulanabilir.
- Farklı yerlerde kullanılan herhangi bir algoritma için strateji tasarım deseni uygulanabilir.
Ayrıca kütüphanelerin farklı sürümleriyle uğraşırken Oded tarafından belirtilen geçerli bir nokta
- tek bir sürümde birleştirin. Cephe tasarım deseni burada yardımcı olabilir.
Sonunda sorumu cevaplamak için en iyi cümle uyarıcıdır:
OO dillerinde kullanılan kod yeniden kullanım yöntemi nesnelerdir.