Ringkasan
Seperti yang ditulis JacquesB, tidak semua orang setuju dengan "Kode Bersih" Robert C. Martin.
Proyek sumber terbuka yang Anda temukan "melanggar" prinsip-prinsip yang Anda harapkan cenderung hanya memiliki prinsip lain.
Perspektif saya
Saya kebetulan mengawasi beberapa basis kode yang sangat mematuhi prinsip Robert C. Martin. Namun, saya tidak benar-benar mengklaim bahwa mereka benar , saya hanya bisa mengatakan mereka bekerja dengan baik untuk kami - dan bahwa "kami" sebenarnya merupakan kombinasi dari setidaknya
- ruang lingkup dan arsitektur produk kami,
- target pasar / harapan pelanggan,
- berapa lama produk dipelihara,
- metodologi pengembangan yang kami gunakan,
- struktur organisasi perusahaan kami dan
- kebiasaan, pendapat, dan pengalaman masa lalu pengembang kami.
Pada dasarnya, ini bermuara pada: setiap tim (baik itu perusahaan, departemen atau proyek open source) adalah unik. Mereka akan memiliki prioritas dan sudut pandang yang berbeda, dan tentu saja mereka akan membuat pengorbanan yang berbeda. Pengorbanan ini, dan gaya kode yang mereka hasilkan, sebagian besar adalah masalah selera dan tidak dapat dibuktikan "salah" atau "benar". Tim hanya dapat mengatakan "kami melakukan ini karena itu bekerja untuk kami" atau "kami harus mengubah ini karena tidak bekerja untuk kami".
Yang mengatakan, saya percaya bahwa untuk dapat berhasil mempertahankan basis kode yang besar selama bertahun-tahun, setiap tim harus menyetujui serangkaian konvensi kode yang mereka pikir cocok untuk aspek-aspek yang diberikan di atas. Itu mungkin berarti mengadopsi praktik-praktik oleh Robert C. Martin, oleh penulis lain, atau menciptakan praktik mereka sendiri; itu mungkin berarti menuliskannya secara formal atau mendokumentasikannya "dengan contoh". Tetapi mereka harus ada.
Contoh
Pertimbangkan praktik "pemisahan kode dari metode panjang menjadi beberapa metode pribadi".
Robert C. Martin mengatakan bahwa gaya ini memungkinkan untuk membatasi isi dari setiap metode untuk satu tingkat abstraksi - sebagai contoh sederhana, metode umum akan mungkin hanya terdiri dari panggilan ke metode pribadi seperti verifyInput(...)
, loadDataFromHardDisk(...)
, transformDataToJson(...)
dan akhirnya sendJsonToClient(...)
, dan metode ini akan detail implementasi.
- Beberapa orang menyukai ini karena pembaca dapat memperoleh ikhtisar cepat dari langkah-langkah tingkat tinggi dan dapat memilih detail mana yang ingin mereka baca.
- Beberapa orang tidak menyukainya karena ketika Anda ingin mengetahui semua detail, Anda harus melompat-lompat di kelas untuk mengikuti alur eksekusi (inilah yang merujuk JacquesB ketika ia menulis tentang menambah kompleksitas).
Pelajarannya adalah: semuanya benar, karena mereka berhak memiliki pendapat.