Apa yang berisi review kode standar?


19

Di perusahaan saya, ini adalah diskusi email tentang fitur apa yang diterapkan dan bug apa yang diperbaiki yang dikirim oleh orang yang menulis kode. Dan pengulas, yang menerima surat, akan meninjau kode dan membahas kualitas dan cara mengedit kode menurut pendapatnya. Apa yang berisi review kode standar?


10
Di sini, tampaknya, kami tidak punya waktu untuk ulasan kode, tetapi banyak waktu untuk berurusan dengan hasil yang gagal. Saya berharap saya bercanda.
MetalMikester

Jawaban:


12

Dalam pengalaman saya, sebagian besar ulasan kode formal beralih ke pengecekan gaya karena mudah. Bahkan ketika Anda memberikan daftar hal-hal untuk dilihat, cukup mudah bagi mata untuk mulai melirik.

Saya telah menemukan bahwa ulasan pengujian unit memberikan lebih banyak manfaat. Sebagian besar pengembang tempat saya bekerja tidak benar-benar tahu cara menguji unit dengan benar, dan begitu mereka mendapatkan "Aha!" saat sisa kode mereka mulai membaik juga. Ini sebuah petunjuk: ini bukan tes unit jika Anda mengharuskan pengguna untuk memeriksa sesuatu, dan itu bukan tes unit jika Anda baru memulai sesuatu untuk dijalankan dalam debugger.


LOL, pemahaman yang baik tentang unit test adalah suatu keharusan. Dan kabar baiknya adalah pengujian itu hanya akal sehat - membutuhkan waktu lebih sedikit untuk mencari tahu daripada mengatakan ... waktu yang dibutuhkan untuk mengambil bahasa baru.
Pekerjaan

Saya menemukan diri saya tertarik pada hal-hal ketika ada kurangnya cakupan unit test. Ketika saya melihat tes unit dalam tinjauan kode, itulah tempat pertama yang saya lihat. Jika saya melihat unit test mengenai persyaratan bisnis dan kasus tepi yang masuk akal (periksa untuk nol jika sesuai, pengujian batas pada rentang nilai) maka saya cenderung tidak mengambil nit --- yang tidak berarti Anda harus memilih pada hal-hal kecil . Hanya saja "buktinya ada di puding." Sulit untuk berdebat dengan unit test yang dibangun dengan baik yang lulus.
Greg Burghardt

6

Itu cenderung bervariasi berdasarkan pada apa masalahnya. Sering kali itu adalah stempel sederhana. "Inilah masalahnya, lihat baris ini di sini, sudah jelas apa yang salah, dan di sinilah aku memperbaikinya." "Yup, itu cukup jelas. Silakan dan periksa."

Tetapi ketika sesuatu yang lebih terlibat terjadi, biasanya seperti ini:

  • Jalankan Periksa Modifikasi pada TortoiseSVN dan dapatkan daftar file yang diubah.
  • Bawa reviewer ke kantor Anda.
  • Jelaskan masalahnya, dengan CR dari sistem pelacakan bug terbuka untuk referensi.
  • Turun daftar file di TortoiseSVN, buka masing-masing di BeyondCompare untuk melihat perubahan.
  • Jika peninjau tidak memahami perubahan, jelaskan apa yang Anda lakukan dan mengapa.
  • Peninjau mungkin melihat sesuatu yang tidak terlihat bagus. Jika demikian, diskusikan sampai Anda mencapai kesepakatan apakah harus diubah atau tidak. (Jika perubahan sederhana perlu dilakukan, Anda bahkan dapat mengedit file di dalam BeyondCompare.)
  • Jika Anda telah membuat perubahan, kompilasi ulang dan pastikan itu dibuat!
  • Jalankan program untuk menunjukkan kepada pengulas bahwa perbaikan Anda benar-benar berfungsi.
  • Periksa di

4

IMO, Tinjauan kode tidak ada hubungannya dengan fitur atau bug, tetapi berfokus pada kualitas kode dan tes yang ditulis untuk itu.

Jadi, Anda duduk di sebelah rekan Anda dan minta dia menjelaskan kodenya, atau ambil kodenya dan lalui, apa pun situasinya.

Memang membantu ketika semua orang memprogram melawan standar yang sama dan jika Anda menggunakan alat seperti fxCop untuk mengotomatiskan bagian dari proses.


2

Saya lebih suka review kode di mana dev duduk dengan reviewer dan melewati baris kode demi baris menjelaskannya. Seringkali, dev akan melihat masalah dalam melakukan penjelasan bahwa reviewer mungkin belum melihat yang mengapa ini adalah preferensi saya. Saya juga melakukan review kode di mana saya mengirim kode dan membacanya sendiri dan membuat komentar, tetapi saya menemukan itu cenderung memakan waktu lebih lama (saya meninjau dan menyusun komentar dan mengirim ke dev yang membacanya dan pergi WTF maksudnya dan email saya kembali dan saya jelaskan dan dua atau tiga putaran kemudian kita berkumpul dan saya menunjukkan di layar apa yang saya maksud dan dev pergi, "oh ya sekarang saya melihatnya.") dan menjadi kurang produktif karena ada diskusi yang kurang asli dan lebih lanjut, "Anda melakukan kesalahan ini."

Penting juga untuk menegakkan standar dalam tinjauan kode tetapi tidak menjadikannya satu-satunya fokus.

Namun, kode tidak dikirim ke produksi sampai peninjau kode bahagia atau manajer (bukan dev) telah menolaknya (peninjau kode juga salah). Ini sangat penting atau peninjauan kode hanyalah proses birokrasi tanpa nilai tambah kecuali peninjau kode harus menyetujui kode final sebelum didorong.


Saya selalu menyarankan agar terserah kepada dev apa yang dia lakukan dengan umpan balik ulasan. Peninjau tidak selalu tahu yang terbaik dan ketika perjanjian wajib, Anda mungkin perlu menginvestasikan sedikit waktu untuk mendidik peninjau. Saya akan mempertimbangkan pemeriksaan 'integrasi' final oleh pengembang senior / pemimpin.
Joppe

0

Pertama, Anda perlu memiliki standar pengkodean dan ini lebih dari sekadar sintaks. Ketika orang-orang mulai di perusahaan Anda, mereka harus mempelajari pedoman perusahaan Anda sebanyak mungkin sebelum mereka memulai pengkodean . Jika dalam proses peninjauan semua jenis pelanggaran ditemukan mereka kemungkinan besar akan:

  • tidak diperbaiki karena keterbatasan waktu
  • ditemukan lebih menjengkelkan daripada apa yang layak pedoman

Pedoman harus masuk akal dan harus ada alat yang tepat untuk menemukan pelanggaran dan untuk memperbaiki semudah mungkin. Selalu lihat tujuan pedoman dan tinjauan kode

Tujuan dalam pikiran saya adalah membuat kode seseragam mungkin dan untuk menemukan masalah dengan pemeliharaan dan keterbacaan. Tujuan kedua adalah meningkatkan kecepatan orang dengan perangkat lunak tertentu.

Pedoman dalam pikiran saya misalnya bisa ada:

  • sintaksis umum dan pedoman pengkodean (pilih satu yang sudah ada dan gunakan alat yang memeriksa secara otomatis)
  • Penanganan pengecualian yang tepat
  • Penebangan yang tepat
  • Baik penggunaan paradigma untuk bahasa (SOLID untuk bahasa OO)
  • Ketergantungan yang jelas dan dipikirkan dengan baik antara komponen (gunakan alat seperti NDepend)
  • Skrip membangun bekerja
  • Hadir dokumentasi (startup startup, manual instalasi)
  • perpustakaan internal untuk digunakan
  • kebijakan perusahaan
  • perkakas pihak ketiga yang tidak diizinkan
  • Tes unit hadir dan tidak gagal
  • cakupan kode 90%
  • ...

Dengan demikian, tinjauan kode terdiri dari perangkat lunak yang diperiksa terhadap pedoman dan:

  • mendiskusikan pelanggaran dengan programmer
  • memperbaiki pelanggaran yang tidak perlu
  • komentar pelanggaran yang diperlukan
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.