Google memiliki praktik peninjauan kode terbaik dari tempat mana pun yang pernah saya lihat. Semua orang yang saya temui di sana sepakat sepenuhnya tentang cara melakukan tinjauan kode. Mantra ini "ditinjau lebih awal dan sering".
Misalkan Anda menggunakan proses yang tampak seperti apa yang disarankan Graham Lee. (Yang merupakan proses yang sebelumnya saya gunakan sendiri.) Masalahnya adalah bahwa pengulas diminta untuk melihat potongan besar kode. Itu adalah upaya yang jauh lebih banyak, dan lebih sulit untuk mendapatkan pengulas untuk melakukannya. Dan ketika mereka melakukannya, lebih sulit untuk membuat mereka melakukan pekerjaan itu dengan seksama. Terlebih lagi ketika mereka melihat masalah desain, lebih sulit untuk membuat pengembang kembali dan mengulang semua kode kerja mereka untuk membuatnya lebih baik. Anda masih menangkap barang, dan itu masih berharga, tetapi Anda tidak akan menyadari bahwa Anda kehilangan lebih dari 90% dari keuntungan.
Sebaliknya, Google memiliki ulasan kode pada setiap komitmen sebelum dapat masuk ke kontrol sumber. Naif banyak orang berpikir bahwa ini akan menjadi proses yang berat. Tetapi dalam praktiknya tidak seperti itu. Ternyata lebih mudah untuk meninjau potongan-potongan kecil kode secara terpisah. Ketika masalah ditemukan, itu jauh lebih sedikit pekerjaan untuk mengubah desain karena Anda belum menulis banyak kode di sekitar desain itu. Hasilnya adalah bahwa jauh lebih mudah untuk melakukan tinjauan kode menyeluruh, dan jauh lebih mudah untuk memperbaiki masalah yang berubah.
Jika Anda ingin melakukan review kode seperti yang dilakukan Google (yang saya sangat sarankan), ada perangkat lunak untuk membantu Anda melakukannya. Google telah merilis alat mereka yang terintegrasi dengan Subversion sebagai Rietveld . Go (bahasa) dikembangkan dengan versi Rietveld yang dimodifikasi untuk digunakan dengan Mercurial. Ada penulisan ulang untuk orang yang menggunakan git bernama Gerrit . Saya juga melihat dua alat komersial yang direkomendasikan untuk ini, Crucible and Review Board .
Satu-satunya yang saya gunakan adalah versi internal Google Rietveld, dan saya sangat senang dengannya.
Saya tidak pernah memisahkan kode untuk ditinjau oleh kriteria yang dikomit / tidak berkomitmen - satu-satunya kriteria yang saya temui adalah tes unit dan tes integrasi berwarna hijau.
Sedangkan untuk pelacakan saya akan merekomendasikan untuk memperbarui aliran dalam pelacak masalah favorit Anda. Untuk contoh, bukan:
Anda mungkin ingin memperkenalkan satu tahap lagi (ulasan):
Karenanya untuk setiap tiket di negara bagian yang menerapkan , Anda dapat menetapkan peninjau dan hanya tiket yang diulas akan maju ke QA.
sumber
Saya hanya memiliki satu pengalaman ulasan kode, jadi saya tidak bisa mengatakan seberapa bagusnya.
Saya bekerja dengan sekelompok kecil coders (~ 10-15), dan kami menggunakan VS Team Foundation Studio. Kami diminta untuk mengkomit kode sekali sehari, dan sebelum setiap kode komit harus ditinjau oleh orang lain dalam grup (mudah-mudahan oleh seseorang juga terlibat dalam proyek). Selama komit, nama orang itu juga dimasukkan dalam bidang.
sumber
Saya bekerja di tim yang mengkode meninjau semua yang diperiksa pada perubahan demi perubahan selama beberapa ulasan seminggu. Ini berarti kami tidak selalu benar dengan ulasan kode tetapi mencapai apa yang kami capai.
Jadi pertama-tama, tanyakan apa yang ingin Anda capai dengan meninjau kode. Dalam kasus kami, itu bukan untuk menangkap pengembang idiot, ada asumsi kompetensi daripada asumsi ketidakmampuan. Itu memang memungkinkan tim untuk mendapatkan gambaran umum dari area lain dari sistem, dan memungkinkan beberapa keputusan desain yang dipertanyakan untuk diperbaiki sebelum mereka menjadi batu. Dengan dipertanyakan, maksud saya selalu ada lebih dari satu cara untuk menguliti kucing, dan tidak semua orang tahu ada pisau menguliti kucing sudah ada di kotak alat, jadi untuk berbicara.
sumber
Cara kami menangani tinjauan kode adalah bahwa setiap tugas dari perangkat lunak pelacakan proyek kami ditinjau. Saat itu kami menggunakan Mantis dan SVN. Komitmen proyek kami diikat ke dalam kedua sistem. Setiap komit harus dikaitkan dengan tugas dalam belalang. Setelah tugas selesai, status "Ready for Review" ditugaskan untuk itu.
Item RFR kemudian diambil oleh siapa saja yang memiliki waktu luang untuk ulasan atau ditugaskan ke orang tertentu untuk ditinjau. Pada hari Jumat semua item RFR harus ditinjau sebelum akhir hari sehingga tidak ada sisa untuk minggu berikutnya.
Satu-satunya masalah yang kami hadapi dalam proses ini adalah item besar yang memiliki banyak file. Untuk menangani hal ini, pembuat kode dan peninjau akan berkumpul dan pembuat kode akan menjalankan perubahan hingga peninjau memahaminya. Mereka akan melakukan review kode bersama.
Proses ini rusak ketika manajemen menentukan bahwa jika pemrograman rekan dilakukan review kode terpisah tidak perlu. Pengembang menjadi lemah tentang proses dan bug kecil bodoh mulai diperkenalkan. Akhirnya kami kembali ke proses awal dan semuanya kembali bersamaan.
sumber
Di tim saya, kami telah menggunakan latihan selama setahun terakhir atau yang tampaknya bekerja dengan sangat baik.
Organisasi kami menggunakan Perforce untuk kontrol versi. Perforce (per tahun yang lalu) termasuk fitur yang disebut Shelving. Dengan rak, saya bisa "menyimpan" perubahan saya untuk masalah tertentu. Mereka disimpan dalam sistem kontrol versi tetapi tidak diperiksa. Lalu saya meminta pengembang lain di tim saya untuk meninjau kode.
Pengembang lain dapat melihat perubahan saya yang tertunda di Perforce dari komputernya sendiri, dan membandingkan perubahan dengan revisi terbaru. Dia juga dapat "melepaskan dua belas" ke mesin lokalnya jika dia ingin mencoba perubahan saya. Ketika dia menyelesaikan ulasan, dia memberi tahu saya. Saya kemudian memeriksa kode saya dengan "Ditinjau oleh Bob" di akhir komentar.
Ini bekerja sangat baik untuk kita. Pertama-tama, ulasan kode pada umumnya telah terbukti sangat membantu. Selain itu, fitur rak Perforce memungkinkan kami untuk melakukan tinjauan tanpa memeriksa atau kesulitan besar meskipun tim kami tersebar secara geografis - itu sangat penting. Dan itu bekerja dengan baik.
sumber