Jawabannya sederhana.
Konsistensi sangat penting.
tapi itu datang dengan peringatan ...
Anda dan rekan kerja Anda mungkin terobsesi dengan jenis konsistensi yang salah
Implementasi sekali pakai. Mereka dapat sepenuhnya dirombak dengan berbagai tingkat kemudahan tergantung pada kualitas dan kelengkapan dari test suite. Khawatir tentang hal-hal seperti "Haruskah ini menjadi properti?", "Bukankah seharusnya kode ini menggunakan LINQ alih-alih konstruksi tingkat yang lebih rendah?" bernilai meragukan. Sangat sulit untuk mengikat setiap pengukuran dengan nilai konsistensi pada tingkat implementasi. Pertanyaan yang jauh lebih baik untuk ditanyakan pada tingkat ini adalah "Apakah kode ini berfungsi seperti yang diiklankan?". Konsistensi implementasi TL; DR adalah tempat "pikiran kecil" memainkan hobgoblin mereka.
Mengapa konsistensi tidak sepenting di sini? Implementasi biasanya memiliki sejumlah kecil kontributor. Sebagian besar metode ditulis dan tidak pernah disentuh lagi. Dari kode yang tersisa jumlah metode yang memiliki dua kontributor hampir pasti mayoritas. Pola ini berlanjut hingga tak terhingga . Dalam konteks ini konsistensi tidak begitu penting. Jika umur simpan kode cukup kecil ( beberapa tahun ) keuntungan dari konsistensi agresif kemungkinan bukan faktor.
Ini bukan untuk mengatakan bahwa Anda harus menjadi gila dalam implementasi Anda. Alih-alih itu mengatakan bahwa desain yang bagus, bersih, sederhana akan menjadi urutan besarnya lebih berharga bagi pemelihara masa depan hipotetis Anda daripada metode konsistensi pelat ketel konyol dengan metode. Ini membawa kita ke titik nyata ...
API tidak dapat dibuang.
Ini semua level kode API, layanan web, SDK, dll. Ini harus, harus, HARUS konsisten. Keuntungan produktivitas dari variasi konsistensi ini sangat besar karena sejumlah alasan:
Tes Integrasi:
Jika Anda menjaga API Anda konsisten, Anda dapat membuat suite tes integrasi. Ini memungkinkan pengembang untuk secara bebas bertukar detail implementasi dan mencapai validasi segera. Ingin menukar kerja sama Anda dengan LINQ? Apakah tes integrasi berjalan? Ini juga memberikan validasi ketika bersiap untuk pergi ke produksi. Karena komputer cepat, satu laptop dapat membentuk karya seribu penguji yang menjalankan tugas-tugas duniawi. Ini sama saja dengan meningkatkan jumlah karyawan organisasi Anda secara signifikan.
Produktifitas
Ketika API konsisten, Anda dapat membuat perkiraan tentang cara menggunakan API hanya dengan mengikuti apa yang telah Anda pelajari tentang penggunaan bagian lain dari API. Ini karena API memberikan "tampilan dan nuansa" yang alami, konsisten. Ini berarti klien Anda menghabiskan lebih sedikit waktu untuk menyaring dokumentasi. Onboarding lebih mudah dan lebih murah. Lebih sedikit pertanyaan yang diajukan kepada orang-orang yang mengembangkan API. Konsistensi membuat semua orang menjadi pemenang
Mengapa konsistensi penting dalam skenario ini? Karena API memiliki masalah yang berlawanan dengan implementasi. Jumlah orang yang menggunakannya biasanya jauh lebih besar daripada jumlah orang yang berkontribusi pada implementasi mereka. Keuntungan kecil dari sedikit konsistensi dikalikan dan biaya mempertahankan konsistensi diamortisasi.
Kesimpulan
Konsistensi mahal. Pada wajahnya itu menurunkan produktivitas. Ini menghambat pengembang dan membuat hidup mereka lebih sulit. Ini menempatkan batasan pada cara mereka dapat memecahkan masalah kadang-kadang memaksa mereka untuk menyelesaikannya dengan cara yang tidak optimal. Ini sering karena alasan yang tidak mereka pahami, tidak dipahami, atau mereka tidak mengetahui (kontrak, kebijakan organisasi atau antar organisasi yang lebih besar).
Raymond Hettinger membuat beberapa poin bagus dalam pidatonya di Pycon 2015 tentang penggunaan panduan gaya PEP8 untuk tim pemrogram python. Dia menunjukkan bahwa obsesi pada konsistensi gaya pada potongan kode menyebabkan pengulas kode kehilangan logika serius dan kekurangan desain. Hipotesisnya dapat diringkas karena menemukan inkonsistensi gaya mudah; menentukan kualitas nyata dari sepotong kode itu sulit
Intinya di sini adalah kritis. Identifikasi di mana konsistensi penting dan lindungi secara agresif. Di mana itu tidak penting jangan buang waktu Anda. Jika Anda tidak dapat memberikan cara obyektif untuk mengukur nilai konsistensi (dalam kasus-kasus di atas "jumlah karyawan efektif", biaya sebagai fungsi produktivitas) dan Anda tidak dapat menunjukkan pengembalian yang besar, maka kemungkinan Anda melakukan tindakan merugikan untuk organisasi MU.