Saya adalah bagian dari tim yang terdiri dari tujuh pengembang di perusahaan perangkat lunak kecil dan saya mencoba memperkenalkan kode grup dan ulasan desain. Kami telah melakukan beberapa ulasan di masa lalu, tetapi sudah sporadis. Saya ingin menjadikannya hal yang lebih biasa.
Saya telah membaca Kode Lengkap dan sumber daya serupa lainnya dan mereka berbicara tentang mekanisme bagaimana melakukan tinjauan kode tetapi saya tidak dapat menemukan praktik terbaik tentang cara memilih apa yang akan ditinjau. Kami memiliki basis kode yang berusia lebih dari delapan tahun dan mencakup berbagai bahasa, jadi ada banyak yang bisa dilihat.
Berikut adalah beberapa faktor yang dapat saya pikirkan yang mungkin mempengaruhi pilihan:
- Bahasa: C, Java, SQL, PL / SQL
- Usia kode: Kode baru vs kode lama
- Penggunaan kode: Kode yang sering digunakan vs (efektif) kode mati / sedikit digunakan
- Kode penting: Kode kritis vs kode tidak kritis
- Pengembang: Kode pengembang junior vs. Kode pengembang senior
Saya mengerti bahwa ini bukan pertanyaan dengan jawaban pasti yang absolut, tetapi panduan apa pun akan bermanfaat.
Beberapa pertanyaan terkait perifer:
- Pendekatan tinjauan kode (Sebutan meninjau bagian penting dan kode pengembang baru)
- Haruskah kita mencoba meninjau semua kode kita?
sumber
Mulailah dengan meninjau semua perubahan yang Anda lakukan pada kode; itu akan menghentikan masalah semakin buruk. Kemudian mulailah meninjau kode berdasarkan frekuensi perubahan; ini akan menjadi area 'masalah'.
Anda harus mencari cara untuk melacak bahwa Anda telah meninjau bagian kode sehingga Anda dapat menganalisis cakupan ulasan kode Anda relatif terhadap masalah lain.
Jika Anda dapat menentukan kode apa yang tidak tercakup oleh pengujian Anda, itu menjadi prioritas yang lebih tinggi untuk ditinjau.
sumber
Tinjau semua perubahan baru yang telah dibuat sebelum mereka menghasilkan. skrip instalasi, kode sumber, perubahan basis data, semuanya! Inti dari tinjauan kode adalah untuk menghentikan kode buruk dari membuatnya menjadi produksi. Baik itu skema organisasi yang buruk atau sekadar bug yang diperkenalkan karena ada sesuatu yang terlewatkan.
Refactoring kode yang sedang Anda kerjakan berjalan seiring dengan review kode. Misalnya, ketika saya meninjau kode, jika ada kode duplikat di kelas yang berisi perbaikan bug, bahkan jika pengembang tidak mengubah kode itu dalam perbaikan mereka, saya tidak akan meneruskannya. Saya ingin mereka kembali dan menghapus kode duplikat.
Jika Anda refactor tanpa henti maka review kode menjadi berguna. Kalau tidak, itu buang-buang waktu.
Jika Anda memasukkan proses peninjauan kode sebagai langkah dalam proses pengembangan Anda, basis kode akan menjadi lebih baik seiring waktu. Lebih baik lagi, Anda tidak boleh membiarkan pengembang Anda mengambil pekerjaan fitur baru atau perbaikan bug sampai backlog ulasan kode kosong. Ini memastikan bahwa review kode dilakukan.
Jika ada area yang diketahui yang perlu di refactored, tetapi akan membutuhkan waktu lama untuk melakukannya (yaitu 1 minggu atau lebih). Kemudian buat item kerja untuk refactoring itu sendiri dan tambahkan item itu untuk dikerjakan.
sumber
Mulailah dengan meninjau semua kode baru, dan modifikasi pada kode yang ada.
Saat meninjau modifikasi kode yang ada, pengembang harus mengikuti aturan boyscout. Tinggalkan kodenya lebih baik daripada yang dia temukan.
Itu tidak berarti bahwa Anda harus memperbaiki seluruh file agar sempurna. Tapi itu seharusnya tidak menambah kekacauan, itu harus membuatnya sedikit lebih baik. Mungkin dengan memindahkan modifikasi ke kelas-kelas baru yang terstruktur dengan benar, dan meninggalkan sisa file kode asli apa adanya (setelah semua, ini 'berfungsi).
Setelah Anda mulai meningkatkan kode dengan meninjau semua kode baru dan modifikasi, sebagai pengembang, Anda harus tahu bidang aplikasi mana yang paling membutuhkan perubahan. Kemudian, tinjau semua itu, diskusikan bagaimana mereka dapat ditingkatkan, sedikit demi sedikit.
Meninjau kode yang ditulis 10 tahun yang lalu, demi memeriksanya, tidak ada gunanya, pengembang harusnya meningkat selama 10 tahun itu. Jadi, tidak ada gunanya meninjaunya hanya untuk mengetahui apa yang Anda semua tahu.
Tujuan tinjauan kode adalah untuk meningkatkan dan memperbaiki kesalahan yang Anda buat saat ini dan untuk membagikan pengetahuan itu di antara tim.
sumber
Dalam proyek saya, kami memasukkan tinjauan kode sebagai yang harus dimiliki dalam banyak kasus untuk setiap tugas / cerita pengguna / bug yang sedang dikembangkan. Kami menggunakan proses scrum / agile dan tiket / cerita tidak dipindahkan ke build (yang merupakan jaminan untuk QA) sampai unit test ditulis dan pengkodean kode selesai.
Kami menggunakan analisis Atlassian FishEye dengan ulasan kode Crucible yang terintegrasi dengan JIRA + SVN untuk tujuan ini.
Ketika pengembang memeriksa kode untuk cerita tertentu, ia membuat ulasan kode baru di FishEye, di mana ia memilih anggota tim lainnya untuk melakukan pemeriksaan.
Setelah peninjauan kode selesai, (alat menyoroti perubahan yang diajukan dan memungkinkan untuk meninggalkan komentar untuk baris kode tertentu) pengembang mengoreksi masalah yang disebutkan / mengimplementasikan perbaikan yang disarankan dan memindahkan tiket ke kolom Dibangun di JIRA - yang berarti cerita adalah siap untuk diuji dan tidak ada lagi perubahan kode yang diharapkan untuk item kerja spesifik ini.
Ini juga memastikan QA tidak menguji apa pun yang mungkin diubah dan berpotensi rusak saat melakukan refactoring kode setelah peninjauan kode .
Singkatnya, semua kode harus ditinjau - ini mendukung kode berkualitas tinggi, yang biasanya menghasilkan desain yang lebih baik, keterbacaan, rawatan dan kemampuan uji kode dan meningkatkan kinerja pengembangan dalam jangka panjang.
sumber