Saya yakin ada nama untuk pola-anti ini di suatu tempat; namun saya tidak cukup akrab dengan literatur anti-pola untuk mengetahuinya.
Pertimbangkan skenario berikut:
or0
adalah fungsi anggota dalam suatu kelas. Baik atau buruk, itu sangat tergantung pada variabel anggota kelas. Programmer A datang dan membutuhkan fungsi seperti or0
tetapi alih-alih memanggil or0
, Programmer A menyalin dan mengganti nama seluruh kelas. Saya menduga dia tidak menelepon or0
karena, seperti yang saya katakan, itu sangat tergantung pada variabel anggota untuk fungsinya. Atau mungkin dia seorang programmer junior dan tidak tahu bagaimana menyebutnya dari kode lain. Jadi sekarang kita punya or0
dan c0
(c untuk salinan). Saya tidak bisa sepenuhnya menyalahkan Programmer A untuk pendekatan ini - kita semua berada di bawah tenggat waktu yang ketat dan kita meretas kode untuk menyelesaikan pekerjaan.
Beberapa programmer mempertahankannya or0
jadi sekarang versi orN
. c0
sekarang versi cN
. Sayangnya sebagian besar programer yang mempertahankan kelas yang mengandung or0
tampaknya sama sekali tidak menyadari c0
- yang merupakan salah satu argumen terkuat yang dapat saya pikirkan untuk kebijaksanaan prinsip KERING. Dan mungkin juga ada pemeliharaan independen kode di c
. Either way tampaknya itu or0
dan c0
dipertahankan independen satu sama lain. Dan, sukacita dan kebahagiaan, kesalahan terjadi di cN
yang tidak terjadi di orN
.
Jadi saya punya beberapa pertanyaan:
1.) Apakah ada nama untuk pola-anti ini? Saya telah melihat ini terjadi begitu sering sehingga sulit untuk percaya ini bukan anti-pola bernama.
2.) Saya dapat melihat beberapa alternatif:
a.) Perbaiki orN
untuk mengambil parameter yang menentukan nilai semua variabel anggota yang dibutuhkan. Kemudian, modifikasi cN
untuk memanggil orN
dengan semua parameter yang diperlukan diteruskan.
b.) Cobalah untuk port secara manual memperbaiki dari orN
ke cN
. (Pikiran Anda, saya tidak ingin melakukan ini tetapi itu adalah kemungkinan yang realistis.)
c.) Salin orN
ke - cN
lagi, yuck tapi saya daftar demi kelengkapan.
d.) Cobalah untuk mencari tahu di mana cN
rusak dan kemudian memperbaikinya secara independen orN
.
Alternatif yang tampaknya seperti memperbaiki terbaik dalam jangka panjang tapi aku ragu pelanggan akan membiarkan saya menerapkannya. Tidak pernah ada waktu atau uang untuk memperbaiki hal-hal yang benar tetapi selalu waktu dan uang untuk memperbaiki masalah yang sama 40 atau 50 kali, kan?
Adakah yang bisa menyarankan pendekatan lain yang mungkin tidak saya pertimbangkan?