Saya telah menghabiskan banyak waktu membaca berbagai buku tentang "desain yang baik", "pola desain", dll. Saya penggemar berat pendekatan SOLID dan setiap kali saya perlu menulis sepotong kode sederhana, saya memikirkan masa depan. Jadi, jika menerapkan fitur baru atau perbaikan bug hanya perlu menambahkan tiga baris kode seperti ini:
if(xxx) {
doSomething();
}
Itu tidak berarti saya akan melakukannya dengan cara ini. Jika saya merasa potongan kode ini kemungkinan akan menjadi lebih besar dalam waktu terdekat, saya akan memikirkan untuk menambahkan abstraksi, memindahkan fungsi ini di tempat lain dan seterusnya. Tujuan yang saya kejar adalah menjaga kompleksitas rata-rata sama seperti sebelum perubahan saya.
Saya percaya, bahwa dari sudut pandang kode, ini adalah ide yang cukup bagus - kode saya tidak pernah cukup lama, dan cukup mudah untuk memahami makna untuk entitas yang berbeda, seperti kelas, metode, dan hubungan antara kelas dan objek.
Masalahnya adalah, butuh terlalu banyak waktu, dan saya sering merasa akan lebih baik jika saya hanya mengimplementasikan fitur "sebagaimana adanya". Ini hanya tentang "tiga baris kode" vs. "antarmuka baru + dua kelas untuk mengimplementasikan antarmuka itu".
Dari sudut pandang produk (ketika kita berbicara tentang hasilnya ), hal-hal yang saya lakukan tidak masuk akal. Saya tahu bahwa jika kita akan bekerja pada versi berikutnya, memiliki kode yang baik sangat bagus. Tetapi di sisi lain, waktu yang Anda habiskan untuk membuat kode Anda "baik" mungkin telah dihabiskan untuk mengimplementasikan beberapa fitur yang bermanfaat.
Saya sering merasa sangat tidak puas dengan hasil saya - kode bagus yang hanya bisa melakukan A lebih buruk daripada kode buruk yang bisa melakukan A, B, C, dan D.
Apakah pendekatan ini cenderung menghasilkan keuntungan bersih positif untuk proyek perangkat lunak, atau hanya membuang-buang waktu?