Anda tidak melakukan KERING karena seseorang menulisnya di buku di suatu tempat yang baik untuk dilakukan, Anda melakukannya KERING karena sebenarnya memiliki manfaat nyata.
Khususnya dari pertanyaan itu:
Jika Anda mengulangi diri Anda sendiri, Anda dapat membuat masalah pemeliharaan. Jika doStuff1-3 semua memiliki kode terstruktur yang sama dan Anda memperbaiki masalah dalam satu, Anda bisa dengan mudah lupa untuk memperbaiki masalah di tempat lain. Juga, jika Anda harus menambahkan case baru untuk ditangani, Anda dapat dengan mudah memberikan parameter yang berbeda ke dalam satu fungsi daripada menyalin-menempel di semua tempat.
Namun, KERING sering dibawa ke ekstrem oleh programmer yang pintar. Kadang-kadang untuk tidak mengulangi diri sendiri, Anda harus membuat abstraksi, jadi anggap rekan tim Anda tidak bisa mengikutinya. Kadang-kadang struktur dua hal ini hanya samar-samar serupa tetapi cukup berbeda. Jika doStuff1-4 cukup berbeda sehingga refactoring mereka untuk tidak mengulangi diri Anda menyebabkan Anda harus menulis kode yang tidak wajar atau menjalani backflip pengkodean yang pintar yang akan menyebabkan tim Anda memelototi Anda, maka boleh saja mengulangi sendiri. Saya telah membungkuk ke belakang untuk tidak mengulangi diri saya beberapa kali dengan cara yang tidak wajar dan menyesali produk akhirnya.
Jadi, pada dasarnya, jangan berpikir "oh man, kode ini sangat mirip, mungkin saya harus refactor untuk tidak mengulangi sendiri". Pikirkan "apakah refactoring untuk membuat basis kode ini menggunakan kembali elemen umum membuat kode lebih dapat dipertahankan atau kurang terpelihara ?" Lalu, pilih salah satu yang membuatnya lebih bisa dirawat.
Yang sedang berkata, mengingat SRP dan hanya mencoba untuk memiliki kelas kecil, fleksibel umumnya, mungkin masuk akal untuk menganalisis kode Anda karena alasan itu , memecah bit perilaku yang menggunakan tipe generik (Anda mengatakan bahwa mereka identik selain tipe) menjadi kelas kecil. Kemudian Anda akan mengetahui bahwa beberapa kelas ini benar- benar identik (tidak hanya sebagian besar identik), dan kemudian Anda dapat membangun toolkit jika Anda ingin menambahkan Microsoft.CodeAnalysis.CPlusPlus.Syntax.AttributeSyntax
.