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:
or0adalah fungsi anggota dalam suatu kelas. Baik atau buruk, itu sangat tergantung pada variabel anggota kelas. Programmer A datang dan membutuhkan fungsi seperti or0tetapi alih-alih memanggil or0, Programmer A menyalin dan mengganti nama seluruh kelas. Saya menduga dia tidak menelepon or0karena, 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 or0dan 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 or0jadi sekarang versi orN. c0sekarang versi cN. Sayangnya sebagian besar programer yang mempertahankan kelas yang mengandung or0tampaknya 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 or0dan c0dipertahankan independen satu sama lain. Dan, sukacita dan kebahagiaan, kesalahan terjadi di cNyang 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 orNuntuk mengambil parameter yang menentukan nilai semua variabel anggota yang dibutuhkan. Kemudian, modifikasi cNuntuk memanggil orNdengan semua parameter yang diperlukan diteruskan.
b.) Cobalah untuk port secara manual memperbaiki dari orNke cN. (Pikiran Anda, saya tidak ingin melakukan ini tetapi itu adalah kemungkinan yang realistis.)
c.) Salin orNke - cNlagi, yuck tapi saya daftar demi kelengkapan.
d.) Cobalah untuk mencari tahu di mana cNrusak 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?
