Bir yerde bu anti-desen için bir isim olduğundan eminim; bununla birlikte, bunu tanımak için anti-model literatüre yeterince aşina değilim.
Aşağıdaki senaryoyu düşünün:
or0
bir sınıftaki üye işlevidir. Daha iyisi ya da daha kötüsü, büyük ölçüde sınıf üyesi değişkenlerine bağlıdır. Programmer A gelir ve or0
çağırmak yerine or0
programlamaya ihtiyaç duyar , Programcı A tüm sınıfı kopyalar ve yeniden adlandırır. Dediğim or0
gibi, işlevselliği için üye değişkenlere büyük ölçüde bağımlı olduğu için aramadığını tahmin ediyorum. Ya da belki genç bir programcıdır ve onu diğer kodlardan nasıl arayacağını bilmiyordur. Şimdi or0
ve c0
(kopya için c) var. Programcı A'yı bu yaklaşım için tamamen hatalandıramıyorum - hepimiz sıkı son tarihlere sahibiz ve işi yapmak için kodu hackliyoruz.
Birkaç programcı or0
bu yüzden şimdi sürümü korumak orN
. c0
şimdi sürüm cN
. Ne yazık ki, sınıfları içeren programcıların çoğu , DRY ilkesinin bilgeliği için aklıma gelen en güçlü argümanlardan biri olan or0
tamamen habersiz görünüyordu c0
. Ayrıca, içindeki kodun bağımsız bir şekilde muhafaza edilmiş olması da mümkündür c
. Her iki şekilde de görünür or0
ve c0
birbirinden bağımsız olarak muhafaza edilir. Ve neşe ve mutluluk, içinde meydana gelmeyen bir hata meydana cN
gelir orN
.
Birkaç sorum var:
1.) Bu anti-patern için bir isim var mı? Bunun çok sık olduğunu gördüm, bunun adlandırılmış bir anti-desen olmadığına inanmak zor.
2.) Birkaç alternatif görebiliyorum:
a.) İhtiyaç orN
duyduğu tüm üye değişkenlerin değerlerini belirten bir parametre almak için düzeltme . Ardından , iletilen tüm gerekli parametrelerle cN
çağrı orN
yapmak için değiştirin .
b.) elle liman düzeltmeleri için deneyin orN
için cN
. (Bunu yapmak istemiyorum ama gerçekçi bir olasılık.)
c.) yeniden kopyalamak orN
için cN
, yuck --again ama bütünlüğü sağlamak için liste.
d.) Nerede cN
kırık olduğunu anlamaya çalışın ve sonra bağımsız olarak onarın orN
.
Alternatif a , uzun vadede en iyi düzeltme gibi görünüyor, ancak müşterinin bunu uygulamama izin vereceğinden şüpheliyim. Asla işleri düzeltmek için zaman ya da para değil, aynı sorunu 40 ya da 50 kez onarmak için zaman ve para, değil mi?
Düşünmediğim başka yaklaşımlar öneren var mı?