Saya tidak tahu apakah itu cara terbaik untuk melakukannya ... tapi saya akan menjelaskan bagaimana kami melakukannya. Satu atau lebih pengembang bekerja pada cabang tertentu dan melakukan kode mereka sesering mungkin untuk menghindari buang waktu penggabungan yang tidak akan terjadi sebaliknya. Hanya ketika kode sudah siap, kode tersebut dimasukkan ke dalam kepala. Nah, itu untuk komit dan hal cabang / kepala.
Sedangkan untuk tinjauan kode, kami menggunakan Sonar sebagai alat integrasi berkelanjutan kami (dan Maven / Jenkins untuk berinteraksi dengan Sonar) untuk memberikan kami hasil pengujian baru, cakupan kode, dan tinjauan kode otomatis setiap pagi (pembuatan dilakukan setiap malam) sehingga kami dapat pengembang dapat menghabiskan maksimal satu jam setiap pagi untuk memperbaiki masalah mereka / bau kode. Setiap pengembang bertanggung jawab (bangga juga!) Untuk fitur yang ia tulis. Sekarang, itu tinjauan kode otomatis, yang hebat untuk menemukan potensi masalah teknis / arsitektur, tetapi yang lebih penting adalah menguji apakah fitur-fitur baru yang diimplementasikan melakukan apa yang diinginkan oleh bisnis, dengan benar.
Dan untuk itu, ada dua hal: tes integrasi dan tinjauan kode rekan. Tes integrasi membantu untuk menjadi cukup percaya diri bahwa kode baru tidak merusak kode yang ada. Adapun tinjauan kode rekan, kami melakukannya pada sore hari Jumat, yang merupakan waktu yang sedikit lebih santai untuk melakukan itu :-) Setiap pengembang ditugaskan ke cabang yang tidak dikerjakannya, membutuhkan waktu untuk membaca persyaratan dari fitur baru terlebih dahulu, lalu periksa apa yang telah dilakukan. Pekerjaannya yang paling penting adalah memastikan bahwa kode baru berfungsi seperti yang diharapkan dengan persyaratan, tidak melanggar "aturan" kita sendiri (gunakan objek ini untuk itu, dan bukan yang itu), mudah dibaca, dan memungkinkan untuk ekstensi mudah.
Jadi kami memiliki dua ulasan kode, satu otomatis dan satu "manusia" dan kami mencoba menghindari melakukan kode yang tidak ditinjau ke dalam cabang HEAD. Sekarang ... Itu kadang-kadang terjadi karena berbagai alasan, kami jauh dari sempurna, tetapi kami mencoba untuk menjaga keseimbangan yang adil antara kualitas dan biaya (waktu!)
@ pjz memberikan jawaban yang bagus juga, dan ia menyebutkan alat peninjau kode. Saya tidak pernah menggunakan apapun, jadi saya tidak bisa mengatakan apa-apa tentang itu ... walaupun saya telah tergoda di masa lalu untuk bekerja dengan Crucible karena kita sudah menggunakan JIRA .