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:
or0bir 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 or0programlamaya ihtiyaç duyar , Programcı A tüm sınıfı kopyalar ve yeniden adlandırır. Dediğim or0gibi, 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 or0ve 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ı or0bu 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 or0tamamen 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 or0ve c0birbirinden bağımsız olarak muhafaza edilir. Ve neşe ve mutluluk, içinde meydana gelmeyen bir hata meydana cNgelir 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ç orNduyduğ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ı orNyapmak için değiştirin .
b.) elle liman düzeltmeleri için deneyin orNiçin cN. (Bunu yapmak istemiyorum ama gerçekçi bir olasılık.)
c.) yeniden kopyalamak orNiçin cN, yuck --again ama bütünlüğü sağlamak için liste.
d.) Nerede cNkı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ı?
