Tim di perusahaan baru saya tidak memiliki proses peninjauan kode.
Saya berasal dari perusahaan dengan tinjauan kode sebagai budaya wajib dan karenanya saya tidak merasa nyaman melakukan kode saya tanpa ditinjau oleh seseorang.
Saya sangat percaya bahwa tinjauan kode adalah cara untuk meningkatkan kualitas dan menghemat waktu karena menangkap masalah potensial sebelumnya (perhatikan bahwa saya tidak berbicara tentang pemrograman pasangan).
- Bagaimana saya bisa menunjukkan bahwa tinjauan kode bukan pemboros waktu tetapi penghemat waktu?
- Dapatkah tinjauan kode dilewati jika Anda memiliki unit test?
code-reviews
jparkcool
sumber
sumber
Jawaban:
Tapi kenapa?
Peran utama peer review bukan untuk menangkap bug.
Ya, Anda dapat mengidentifikasi beberapa bug potensial dan kode rawan bug yang meragukan, ini sering terjadi, tetapi terkadang menemukan beberapa kesalahan tidak berarti bahwa peer review adalah cara yang dapat diandalkan untuk mengesampingkan keberadaan bug. Jauh dari itu. Ini bukan alat yang tepat untuk memverifikasi kebenaran fungsional implementasi.
Tinjauan kode memberlakukan pemeliharaan kode . Saya akan menuntut kode itu bersih dan dapat dimengerti (tidak hanya untuk pembuatnya) sebelum mulai diproduksi.
Kehadiran unit test sepenuhnya ortogonal untuk itu. Anda dapat memiliki cakupan kode 100% dan semua tes lulus untuk kode yang benar-benar tidak dapat dipahami.
Peninjauan kode juga berfungsi untuk membiasakan pengembang lain dengan pekerjaan Anda sehingga mereka tahu apa itu dan dapat mengambilnya dari sana, atau menangani laporan bug saat Anda sedang berlibur dll. Mengetahui apa yang telah Anda lakukan dengan segera dapat membantu mereka lakukan pekerjaan mereka dengan baik - pertahankan basis kode konsisten (tetap berpegang pada pola dan konvensi serupa di seluruh aplikasi), atau menghindari duplikasi kode.
Dalam skema yang lebih luas, seseorang juga belajar dan tumbuh sebagai pengembang dari membaca kode orang lain.
Tes unit hampir tidak bisa menjadi pengganti untuk semua itu. Ya, jika ditulis dengan baik, mereka membaca seperti dokumentasi, dan kita harus berusaha untuk ini. Tapi sekali lagi ini tidak eksklusif dengan melakukan peer review, justru sebaliknya - semua keuntungan dari peer review masih berlaku, fakta bahwa rekan-rekan Anda memiliki beberapa unit test yang bagus untuk dilihat hanya akan membuat proses peninjauan lebih mudah dan bahkan lebih menguntungkan bukannya berlebihan.
sumber
Peer review doesn't even attempt to tackle this important aspect
- yah, memang, semacam. Sampai batas tertentu. Saya sering menemukan diri saya menunjukkan misalnya. "Mitra, Anda secara efektif mengulangi logika yang sama di sini, dan itu adalah bom detak. Suatu hari itu akan berubah di tempat lain itu dan kami akan lupa untuk memperbaruinya di sini ..."Saya tidak tahu. Juga sulit untuk melakukan studi seperti itu, karena Anda membutuhkan dua tim yang memiliki tugas untuk menyelesaikan kompleksitas yang sama dan realistis , di mana satu menggunakan ulasan kode dan yang lainnya tidak. Anda mungkin perlu meminta mereka menyelesaikan masalah yang sama , yang berarti membuang banyak uang ke luar jendela. Dan Anda perlu mengulangi eksperimen cukup sering untuk mendapatkan relevansi statistik, yang akan meningkatkan jumlah uang yang dikeluarkan oleh pesanan besar.
Jika Anda hanya mengukur efisiensi perusahaan yang menggunakan tinjauan kode terhadap perusahaan yang tidak, tidak hanya tidak jelas cara mengukur efisiensi, tetapi juga apa penyebab sebenarnya. Ulasan kode adalah bagian dari budaya yang lebih besar. Bagian mana yang benar-benar membuat tim lebih efisien adalah sulit untuk diceritakan (dan mungkin sangat tergantung pada sifat tim atau proyek). Atau keberadaan budaya ini dapat berarti bahwa perusahaan itu lebih kecil atau lebih muda, yang masing-masing memiliki banyak efek. Atau mungkin saja kesediaan untuk tunduk pada ulasan kode menghalangi atau mendorong jarak yang sehat ke ego Anda;)
Tapi jangan lupa: Anda memiliki pengalaman sendiri untuk menggambar. Itu bagian dari mengapa mereka mempekerjakan Anda. Jadi, jika Anda benar-benar yakin dapat meningkatkan efisiensi (dan tim Anda benar-benar menderita kekurangannya), maka komunikasikan dengan jelas.
Nggak. Jika Anda meyakini pentingnya tes, maka sebenarnya tes Anda harus menjadi hal pertama yang ditinjau. Bagaimana jika itu omong kosong? Atau apakah cakupannya buruk? Atau jika mereka menguji implementasi daripada perilaku?
sumber
return true;
.Diambil dari beberapa slide acak yang saya temukan , tetapi data kerasnya berasal dari buku Lengkap Kode Steve McConnell:
Angka 60% itu berasal dari makalah IEEE oleh Shull et al 2002 Apa yang Telah Kita Pelajari Tentang Memerangi Cacat yang berisi bagian berjudul:
sumber
Penafian: Jawaban ini adalah pengalaman pribadi saya :)
Saya membuat pengalaman yang sangat buruk dengan ulasan kode dalam kode yang kami pertahankan. Karena kami biasanya hanya memiliki satu liner atau lebih dan tidak banyak yang harus ditinjau.
Tetapi dalam proyek-proyek aktual saya membuat pengalaman yang baik, pada waktu ujian saya pelatih saya meninjau peraturan saya dan itu banyak membantu saya untuk menemukan beberapa kesalahan yang saya buat sangat sering, yang tidak saya lakukan lagi.
Jadi saya akan mengatakan itu sangat tergantung pada apa yang Anda lakukan, berapa banyak orang, dll.
Juga risiko bahwa codereviews Anda berakhir dalam perang tidak diremehkan.
sumber
Anda dapat meminta ketua tim dan / atau kolega Anda untuk melakukan peer-review kode Anda, bahkan jika tinjauan kode tidak dilakukan secara normal, mungkin sebagai bagian dari pelatihan Anda.
Pastikan kode Anda ditulis dengan baik dan diuji sebelum ditinjau.
Ketika saya adalah seorang pemimpin tim, saya biasa melakukan review kode sendiri dari karyawan baru, sampai (setelah beberapa saat) saya akan berhenti menemukan bug atau apa pun untuk mengkritik kode mereka, dan pada titik mana saya akan berhenti melakukan review kode dengan mereka; itu akan terjadi ketika:
Ulasan kode memiliki beberapa tujuan:
Saya pikir tidak apa-apa untuk melakukan review kode karyawan baru, bahkan jika tim memilih untuk melewatkan review kode di antara anggota tim yang berpengalaman.
sumber
Tidak ada aturan praktis untuk ulasan kode yang harus dilakukan pada perangkat lunak apa pun yang dikembangkan ... semuanya tergantung pada ruang lingkup aplikasi, ukuran klien dan ukuran perusahaan. Misalnya, jika Anda sedang membangun aplikasi di mana itu adalah aplikasi sederhana di mana mungkin tidak ada versi lebih lanjut sedang dilaksanakan di masa depan, pengujian unit sudah cukup di sana. Tetapi sekali lagi tinjauan kode terjadi ketika Anda berbicara tentang kinerja aplikasi di mana Anda perlu meninjau kode untuk setiap jatuh pendek dari kode yang bisa dilakukan dengan cara yang lebih baik untuk memfasilitasi kinerja yang lebih cepat.
Tinjauan kode biasanya dilakukan di mana ada tim yang terdiri lebih dari 2 pengembang dan pemimpin teknologi di mana pemimpin teknologi ingin memastikan kualitas aplikasi dan memastikan standar kode diikuti untuk mengukur aplikasi untuk peningkatan di masa depan dan meningkatkannya untuk berbagai versi mendatang.
Sebagai contoh, kami memiliki banyak platform open source CMS sekarang dan platform ini merilis peningkatan dari waktu ke waktu untuk meningkatkan fitur platform, bayangkan seorang pengembang menggunakan salah satu platform ini dan belum mengikuti standar kode seperti pengkodean keras dalam file inti, aplikasi penulisan kode dalam file templat, dan jika kode ini digunakan untuk produksi dan nanti ketika klien ingin memutakhirkan platform ke versi baru, kode itu tidak akan pernah ditingkatkan kecuali pengkodean dilakukan ulang sesuai standar kode untuk platform itu. Ini menjadi masalah serius untuk merilis kode ke produksi tanpa review kode yang dilakukan.
Jadi saya akan mengatakan memiliki ulasan kode yang dilakukan sebelum rilis adalah suatu keharusan bagi setiap perusahaan perangkat lunak profesional dan pengecualian hanya dapat untuk aplikasi skala pribadi / sangat kecil di mana pengembang adalah programmer yang sangat berpengalaman dan membawa pengalaman bersamanya.
sumber
Peninjauan kode memiliki kelebihan yang tidak berasal dari proses peninjauan itu sendiri: Selalu ada dilema untuk mendapatkan kode yang berkualitas tinggi, tetapi dibuat dalam waktu singkat. Tanpa ulasan kode, Anda sendirian, sehingga Anda dapat mengorbankan kualitas untuk melakukan kode dalam waktu singkat. Dengan ulasan kode, ada pengulas ini yang tidak membiarkan Anda lolos dengan kualitas kode rendah - yang persis seperti yang Anda inginkan, terpaksa menghabiskan waktu untuk mendapatkan kode kualitas yang merupakan apa yang Anda inginkan di tempat pertama, dan yang Anda tahu akan menghemat waktu karena setiap jam yang dihabiskan untuk menulis kode yang lebih baik adalah dua jam disimpan pada debugging (atau lebih).
Tanpa ulasan kode, Anda sendirian, jadi terserah Anda untuk mempertahankan kualitas kode yang tinggi. Solusi sederhana adalah meninjau setiap perubahan yang Anda buat sendiri dan memperbaiki hal-hal yang tidak memenuhi standar kualitas Anda.
Ini juga menghindari situasi yang mengerikan di mana ulasan kode mengarah ke bentrokan ego - situasi di mana programmer A akan menggunakan metode X, sedangkan B akan menggunakan metode Y, jadi jika A menulis kode ia menggunakan metode X, peninjau B bersikeras pada metode Y, jadi A menulis ulang kode menggunakan metode Y, sedangkan jika B telah menulis kode dan A meninjaunya, kebalikannya pasti akan terjadi.
sumber
Jika Anda seorang penganjur ulasan kode, saya khawatir tidak ada pengganti yang nyata. Kasus malang dan stereotip adalah tempat kerja yang tidak melakukan tinjauan kode karena (A) mereka tidak terbiasa dengan praktik, dan / atau (B) mereka tidak ingin mencurahkan waktu dan upaya untuk mendapatkan tinjauan kode sistem di tempat.
Pada dasarnya, untuk mendapatkan apa yang Anda inginkan di sini, Anda memerlukan perubahan budaya di tempat kerja - dan itu tidak pernah sederhana atau mudah. Jangan lupa bahwa meskipun tempat kerja Anda 100% diyakinkan bahwa ulasan kode sangat bagus dan mereka ingin mengadopsinya, sebenarnya beralih ke cara kerja yang baru masih akan membutuhkan investasi waktu, energi, dan produktivitas yang signifikan. Investasi ini harus membayar sendiri - tetapi Anda harus membeli untuk investasi, bukan hanya untuk hasilnya. Lihat video Roy Osherove "Unit Testing dan TDD - How To Make It Happen" - tantangan dalam mengadopsi ulasan kode sangat mirip dengan yang ada pada mengadopsi unit testing.
Sementara itu, lakukan apa yang Anda bisa untuk mendapatkan sebanyak yang Anda bisa:
Manfaat utama dari semua ini adalah, jika Anda dapat mempertahankannya dari waktu ke waktu, maka pengembang di sekitar Anda akan mulai memperhatikan ulasan kode. Anda akan secara efektif menunjukkan bagaimana ulasan kode dapat diintegrasikan dalam budaya yang ada - dan itu membuka jalan bagi budaya untuk mulai berubah. Ulasan kode membantu , jadi jika Anda dapat menunjukkan itu dalam skala kecil, itu akan membuka jalan bagi orang lain - dan budaya secara keseluruhan - untuk mengikuti contoh Anda.
sumber
Berhentilah mencemaskannya - perusahaan baru Anda tidak peduli dengan ulasan kode. Belajarlah untuk memiliki kepercayaan diri pada kemampuan Anda sendiri tanpa orang lain memberi tahu Anda bahwa tidak apa-apa untuk memeriksa kode yang Anda tulis. Anda akan segera belajar untuk hidup tanpa proses yang melelahkan pikiran yang mengkaji kode orang lain.
Ikuti pedoman gaya (atau hanya gaya) yang digunakan orang lain. Gunakan pengalaman Anda untuk memutuskan apa yang perlu dikomentari, konvensi penamaan apa yang akan digunakan dan sebagainya.
Kemudian uji semuanya sebelum Anda memeriksanya. Yang paling penting adalah itu berfungsi dengan benar.
sumber
Jika atasan baru Anda tidak menyukai gagasan tinjauan kode, itu mungkin karena mereka memiliki hubungan negatif dengan metodologi tipe perintah dan kontrol kuno dan mereka mengincar praktik praktik yang lebih modern dan tangkas. Dalam hal ini, mereka mungkin lebih terbuka terhadap ide pemrograman pasangan, yang memberikan banyak manfaat yang sama, dan secara luas dianggap sebagai praktik modern yang lebih dinamis.
sumber