Bagaimana menjadi lebih baik dalam meninjau kode?

11

Pertama saya sangat percaya pada proses peninjauan kode dan selalu ingin orang lain meninjau kode saya. Pertanyaan saya benar-benar terpusat pada bagaimana saya bisa melakukan pekerjaan yang lebih baik dalam melakukan tinjauan kode untuk orang lain?

Saya tahu bahwa untuk melakukan tinjauan kode, Anda harus memiliki pengetahuan tentang cara kerja kode yang ada dan pengetahuan tentang standar lokal, yang keduanya saya rasa sangat saya kenal. Masih saya merasa seperti tidak pernah melakukan review kode yang cukup baik untuk orang lain. Saya juga tahu bahwa orang-orang tertentu tampaknya melakukan kode ulasan pekerjaan yang lebih baik daripada yang lain, jadi saya bertanya-tanya bagi mereka yang peninjau kode hebat teknik apa yang Anda gunakan?

barrem23
sumber
3
Bisakah Anda menjelaskan mengapa Anda merasa tidak melakukan pekerjaan dengan cukup baik? Dengan metrik apa?
Mark Canlas
Setuju dengan @Mark: ulasan kode untuk kebenaran, gaya, kesederhanaan, efisiensi, ...? Apakah Anda dapat menemukan bug dengan membaca kode? Apakah Anda dapat menemukan inkonsistensi dalam gaya dengan membacanya? dan seterusnya.
rwong

Jawaban:

5

Tidak ada cara untuk melakukan tinjauan kode yang lebih baik. Satu-satunya hal yang dapat Anda lakukan adalah meningkatkannya dengan pembelajaran dan pengalaman.

Biasanya hal yang saya ikuti

- Use variables judiciously
- Keep things in scope loose boundaries will generate more errors
- Orient your language of coding in domain specific terms, they make more sense
- Keep loops to minimum 2 for each method if needed
- use ternary operators
- Arrange methods alphabetically
- Keep errors at handling ease
- write less but efficient code

Saya pikir ada banyak yang bisa Anda tambahkan.

T.Raghavendra
sumber
2
Saya tidak yakin mengatur metode berdasarkan abjad adalah ide yang bagus. Saya akan mengatakan menjaga mereka dipesan oleh fungsi mereka akan lebih baik. Memiliki dua metode terkait benar-benar jauh hanya karena mereka dinamai getSomething dan setSomething tampaknya tidak bagus.
melahap elysium
2
TBH, operator ternary sering kali mengubah kode Anda menjadi sesuatu yang lebih sulit untuk dipahami daripada tanpa mereka (walaupun lebih banyak bertele-tele).
melahap elysium
2
Saya juga tidak terlalu yakin apa yang Anda maksud tentang "menulis kode kurang tapi efisien". Saya akan mengatakan secara umum itu seharusnya tidak masalah berapa banyak Anda kode asalkan jelas - Saya tidak peduli perawatan kode efisien sebagian besar waktu.
melahap elysium
3

tanyakan pada diri sendiri apa yang membuat orang lain menjadi peninjau yang baik untuk Anda?

juga, saat Anda membaca kode;

  • berhentilah pada apa pun yang tidak Anda mengerti sekarang tulis bahwa diperlukan komentar
  • mengidentifikasi apakah itu sesuai dengan standar pengkodean: spasi, tanda kurung, camelCase..etc
  • periksa apakah itu termasuk semua fungsi
  • lakukan pengujian logika sederhana untuk melihat apakah ia melewati kondisi batas dll.
Ross
sumber
1
alasan downvote? kritik konstruktif tolong
Ross
2
Gunakan huruf besar dengan benar.
Mark Canlas
1
hahaha apa? np bro
Ross
1

Saya hanya bertujuan

  • menjelaskan mengapa perubahan yang disarankan diperlukan. Memastikan saya mendapatkan alasan tidak hanya memperbaiki
  • menyetujui pemformatan kode - sehingga kode semua orang terlihat sama / akrab
  • berbagi daftar ciri kode yang ingin Anda pertahankan. Letakkan di wiki sehingga semua orang tidak perlu membuat kesalahan sekali pun. Sering perbarui.

Selain itu, "mengetahui apa yang harus dicari" hanya datang dengan pengalaman, latihan, dan membaca.

Gishu
sumber
1
Saya penggemar berat pemformatan kode mekanis. Idealnya dilakukan melalui preprocessor selama checkin, sehingga orang dapat menghindari standar resmi jika benar-benar mengganggu mereka (pengalaman menunjukkan bahwa mereka dengan cepat menyerah)
1

Dalam pengalaman saya, cara terbaik adalah membiarkan tim lubang membuat ulasan kode. Kami menggunakan milis komit di setiap proyek di mana Anda dapat mengikuti setiap perubahan kode ke sistem kontrol versi. Sebagian besar pengembang kami telah berlangganan milis khusus proyek mereka karena mereka tertarik pada perubahan kode.

Ketika seseorang melihat cara yang buruk dalam kode sumber yang baru, ia menjelaskan kepada pengendara bagaimana ia dapat melakukannya dengan cara yang lebih baik, jika pengendara adalah peserta pelatihan, atau ia memulai diskusi tentang hal itu, jika penggantinya lebih berpengalaman.

Tentu saja metode ini tidak menjamin bahwa semua kode baru ditinjau, terutama di masa-masa penuh tekanan ketika tidak ada anggota tim yang senang mengikuti setiap perubahan kode. Juga tidak setiap pengembang bertanggung jawab untuk memastikan bahwa setiap pengembang membuat pekerjaannya baik, sendirian dari ini Anda tidak dapat menjamin bahwa itu ditinjau. Tapi, setidaknya di tim kami, selalu ada manajer teknis yang bertanggung jawab untuk kualitas teknis.

Saya penggemar berat kode jika sesuai dengan skor berikut:

  • setiap pengembang memiliki kemungkinan untuk meninjau semua kode dan argumen menurut pendapatnya
  • tidak ada yang memiliki hak untuk menyalahgunakan kode orang lain
  • bukan hanya kode yang buruk mengaktifkan diskusi tetapi kode yang baik juga
  • diskusi berakhir dengan kebahagiaan bagi setiap orang yang terlibat
  • review terjadi hampir secara real-time, setidaknya sebelum fitur selesai

Apa yang saya pelajari adalah bahwa jika Anda adalah seseorang yang meninjau setiap baris kode dan berpikir Anda harus mengendalikan hal-hal seperti kualitas kode dalam hal pemformatan kode atau efisiensi kode maka Anda sendiri sangat tidak efisien karena Anda melakukan hal-hal yang dapat dilakukan mesin untuk kamu. Target Anda harus menggunakan sistem integrasi berkesinambungan yang mengontrol kualitas kode dan bangun dari setiap kontribusi kode. Jika sistem ini menghasilkan laporan dan mengirimkannya ke kontributor, semuanya sempurna.

Saya harus mengakui bahwa jika Anda harus meninjau kode karena Anda harus mengontrol, atau untuk menentukan peringkat kualitas seorang programmer, maka saran saya tidak masuk akal. Dalam hal ini saya juga tidak akan meninjau kode sumber baris demi baris. Saya akan meninjau hal-hal seperti:

  • apakah ada masalah keamanan yang relevan
  • API yang dimaksudkan digunakan
  • apakah kode menerapkan arsitektur yang ditentukan
  • apakah dia menulis tes yang berguna (tetapi hanya jika dia diinstruksikan secara implisit, saya harus belajar)
  • Dokumentasi
  • proses membangun
  • ... dan masih banyak lagi, mungkin

Jika Anda adalah pengembang yang berpengalaman, Anda pasti akan selalu menemukan hal-hal seperti loop yang dapat Anda lakukan dengan kinerja yang lebih baik. Tentu saja bermanfaat untuk menjelaskan kepada orang lain pengetahuan semacam itu, tetapi ini seharusnya bukan bagian dari sesi peninjauan. Jika ada masalah kinerja yang signifikan maka bukan karena dia (atau dia) menggunakan varian tipe daftar yang kurang efisien.

Karena pertanyaan awal adalah mengapa beberapa orang tampaknya membuat ulasan yang lebih baik seperti orang lain, saya akan menjawab bahwa orang-orang ini mungkin membuat pratinjau sebelum ulasan sebenarnya dimulai, berarti mereka mungkin mempersiapkan diri mereka sendiri sehingga mereka tahu persis apa yang ingin mereka tinjau .

Thomas
sumber
1

[H] bagaimana saya bisa melakukan pekerjaan yang lebih baik dalam melakukan tinjauan kode untuk orang lain?

Ajukan banyak pertanyaan kepada mereka

Saya tahu bahwa untuk melakukan tinjauan kode, Anda harus memiliki pengetahuan tentang cara kerja kode yang ada ...

Sebenarnya, tidak, Anda tidak perlu tahu kode sebelumnya untuk menjadi pengulas yang baik.

Beberapa pekerjaan yang lalu, majikan saya mulai meminta semua check-in kode harus diakhiri oleh pengulas. Saya melakukan sebagian besar pekerjaan GUI di C, dan salah satu pengulas terbaik bagi saya adalah teman saya, Bill. Dia mahir dalam C, tetapi tidak pernah melakukan banyak pekerjaan GUI, dan pergi ke ulasan dia tidak tahu bagaimana kode saya seharusnya bekerja.

Tetapi dia mengajukan banyak pertanyaan tentang itu, dan harus menjelaskan sehingga dia bisa mengerti apa yang kode saya lakukan dan mengapa merangsang banyak pemikiran di pihak saya. Itu membuat saya menemukan banyak bug kecil aneh dengan kasus tepi, dan juga mempertimbangkan pendekatan lain yang mungkin saya ambil. Juga, walaupun saya telah menulis C selama 22 tahun pada saat itu dan berpikir saya cukup mahir, dengan cepat meningkatkan kualitas kode saya.

Meskipun saya tidak lagi bekerja di sana, saya masih meninjau perbedaan sebelum check-in dan bertanya pada diri sendiri, "Pertanyaan apa yang akan Bill miliki tentang ini?" Dan cukup sering, saya akhirnya mengubah sesuatu sebagai hasilnya.

Bob Murphy
sumber