Saya pikir Anda mengambil prinsip Pengulangan Kode terlalu jauh. Pikirkan titik menghindari Pengulangan Kode. Intinya adalah untuk mengurangi jumlah kode yang harus diperiksa ketika ada perubahan dalam logika, dan untuk meningkatkan pemahaman dengan memfaktorkan keluar blok yang jelas-jelas dimaksudkan dengan tujuan yang sama.
Kelemahan dari anjak keluar untuk menghindari Pengulangan adalah bahwa jika salah satu blok bersama harus berubah, sekarang Anda membutuhkan warisan yang lebih kompleks atau beberapa peralihan antara implementasi standar dan non-standar.
Jadi hati-hati mempertimbangkan kemungkinan logika untuk bahkan satu dari blok-blok ini berubah tanpa yang lain terhadap manfaat pemahaman yang diperoleh dengan memperhitungkan kesamaan ini. Jika satu implementasi bisa terpisah dari yang lain Anda mungkin lebih baik hanya mengulangi kode.
Sambil mempertahankan kode yang diulang ini, karena menjadi lebih kompleks dan domain masalah Anda menjadi lebih jelas, Anda dapat menemukannya lebih sesuai dengan faktor yang berulang, yang sekarang lebih kompleks, tetapi juga bagian yang lebih jelas.
Saya biasanya mencoba mempertahankan kesamaan teks-editor untuk sementara waktu sampai saya dapat melihat apakah sesuatu yang terlihat berulang-ulang ternyata layak diperhitungkan. Aku hanya mengulangi pengulangan, tapi aku tetap mengawasi masa depan blok itu dengan menjaganya agar mudah dicocokkan secara tekstual nanti.
Banyak waktu, kesamaan, dan kemungkinan anjak piutang, mulai menghilang, sebagai aturan bisnis yang nyata, berubah-ubah, dan sangat tergantung, sering kali logika sewenang-wenang; seperti berurusan dengan keanehan beberapa implementasi basis data yang umum (ANSI_NULLS atau semacamnya terlintas dalam pikiran) ditambahkan; memaksa apa yang tampak seperti logika murni menjadi kekacauan yang terpelintir, berusaha memberikan logika keputusan yang masuk akal dan dapat dipertahankan ketika berhadapan dengan kekacauan keadaan industri.
Tampak bagi saya bahwa jika orang mencoba memfaktorkan apa yang Anda coba faktorkan, kami akan memiliki seluruh pustaka konstruksi yang tidak bernilai seperti Do1Then2If2False Do1IfTrueDo2.
Itu harus lebih kompleks dan lebih jelas bahwa blok tidak akan berubah untuk menjamin anjak keluar.
Ini perangkat lunak . Anda dapat kembali dan mengedit beberapa blok yang sama sekarang. Butuh 5 menit. Dan Anda dapat menghemat berjam-jam anjak terbuang, dan kemudian jam lebih banyak warisan terbuang dan beralih pengembangan, dengan hanya meninggalkannya, dan memastikan Anda memiliki keyboard anti-RSI yang bagus.