Saya mencari statistik (atau perkiraan) yang mendukung klaim bahwa standar pengkodean membantu mengurangi bug. Angka-angka sulit akan menyenangkan, walaupun saya belum banyak mencari. Saya bahkan telah melihat pelacakan bug untuk berbagai proyek sumber terbuka, tetapi belum terlalu berhasil menemukan apa yang saya butuhkan. Adakah orang di luar sana yang tahu tempat yang mungkin bisa kutemukan? Atau apakah ada di antara Anda yang berkontribusi pada proyek open-source yang memiliki bug yang mungkin dihindari dengan standar pengkodean yang lebih baik?
coding-standards
bug
bug-report
PERASAAN
sumber
sumber
Jawaban:
Standar pengkodean sendiri tidak mengurangi bug. Standar pengkodean sebagai bagian dari proses pengembangan perangkat lunak yang sehat mengurangi bug.
Berikut adalah dua makalah yang mempelajari dampak statistik proses rekayasa perangkat lunak suara pada pengurangan cacat yang dapat Anda gunakan sebagai titik awal:
sumber
Coding "standar" ... Ada banyak bidang pengembangan yang dapat distandarisasi. Apakah kita berbicara tentang konvensi pengkodean, seperti standar penamaan dll? Atau apakah kita berbicara tentang sesuatu yang lebih dalam, seperti TDD / BDD, CI, dll?
Saya dapat memberitahu Anda bahwa kepatuhan terhadap metodologi "test-first", dengan CI menegakkan tes lulus dan cakupan kode yang baik, memang mengurangi jumlah bug yang ditemukan oleh klien. Pengujian otomatis, baik oleh pengembang dan QA, juga merupakan cara yang relatif "murah" untuk menemukan bug karena mereka umumnya memiliki waktu umpan balik yang sangat singkat. Anda dapat mengetahui bahwa Anda tidak menulis apa yang Anda pikir Anda tulis dengan menjalankan unit test senilai sekitar 45 detik. Beberapa jam pengujian integrasi akan menemukan tempat-tempat yang menghubungkan semuanya tidak berjalan sesuai rencana, dan pengujian UI end-to-end dan otomatis dapat dengan cepat menemukan kesalahan fungsional dalam perangkat lunak pada level yang sangat tinggi.
Mereka juga mencegah regresi. Anda menemukan bug. Anda menulis tes yang akan membuktikan bahwa perilaku tidak lagi terjadi, Anda membuat kode hingga tes berlalu, dan sekarang Anda memiliki tes yang sejak saat ini akan memastikan bahwa bug tidak pernah menjadi masalah lagi. Menurut pengalaman saya, inilah sumber utama bug baru; memperbaiki satu hal merusak sesuatu yang lain, dan pengujian pengembang Anda terhadap perbaikan mungkin tidak mencakup situasi lain yang sekarang rusak. Melanggar hal-hal yang dulu berfungsi adalah bendera merah BESAR untuk klien Anda.
Terakhir, struktur pengujian otomatis yang Anda bangun ini sebagai bagian dari metodologi ini akan dengan mudah memberi Anda lingkungan tempat Anda dapat merilis versi baru perangkat lunak dengan pemberitahuan sesaat. "Hei, bug yang baru saja kamu perbaiki telah menyebabkan beberapa sakit kepala nyata; kapan kamu akan siap dalam versi baru?" klik "Oh, dalam sekitar 5 menit ketika server build selesai menerbitkannya ke halaman unduhan".
Sejauh konvensi pengkodean dasar, seperti standardisasi nama variabel dll, saya telah menemukan sebagian besar kurang bermanfaat dan lebih menjengkelkan. Itu adalah jenis standar yang "luar biasa, karena ada begitu banyak untuk dipilih". Apa yang Anda anggap sebagai perbedaan antara pengidentifikasi PascalCased dan camelCased mungkin bukan apa yang dipikirkan orang lain. Garisbawahi terkemuka, batas panjang nama (atau persyaratan agar nama metode / bidang menceritakan sebuah kisah); selain konvensi yang dipaksakan oleh kompiler atau yang biasa dilihat dalam kode pustaka khusus bahasa, IDE modern dapat memberi tahu Anda segala sesuatu yang perlu Anda ketahui tentang variabel atau fungsi termasuk apakah Anda harus atau tidak mencoba menggunakannya dalam suatu tertentu keadaan Selain itu, menjalankan pemeriksaan konvensi kode akan sering mengembalikan masalah dengan kode yang Anda tidak bisa atau tidak Saya tidak ingin mengubah, seperti perpustakaan pihak ketiga yang menggunakan serangkaian standar yang berbeda, atau kode interop yang mungkin sesuai dengan standar penamaan API Win alih-alih standar bahasa asli Anda. Anda akhirnya menambahkan cruft ke kode Anda untuk memberi tahu alat Anda untuk mengabaikan cruft dalam kode Anda.
sumber
Setiap kerentanan injeksi SQL adalah cacat yang bisa dicegah dengan standar pengkodean. Statistik tentang kerentanan injeksi SQL, AFAIK, tersedia.
Setiap kerentanan buffer overflow bisa dicegah dengan standar pengkodean. Statistik tentang itu mungkin tersedia juga.
sumber