Saya seorang pengembang yang berpengalaman, tetapi belum melakukan banyak tinjauan kode. Saya diminta untuk meninjau kode yang ditulis dengan Python tetapi saya tidak tahu Python.
Apakah masuk akal untuk meninjau kode dalam bahasa yang saya tidak tahu?
code-reviews
Heather Smith
sumber
sumber
Jawaban:
Ada akal? Iya. Bahkan jika Anda tidak tahu apa pun tentang semantik bahasa pemrograman, Anda masih dapat membaca karakter dan melihat pemformatan yang tidak konsisten, komentar yang hilang, pengidentifikasi yang dipilih dengan buruk, duplikasi yang jelas, dll.
Banyak akal, atau cukup masuk akal untuk membayar biaya waktu Anda ? Saya tidak yakin. Ini tergantung pada posisi Anda, pentingnya ulasan kode dalam alur kerja tim Anda, dan beberapa faktor lain yang tidak dapat kami kuantifikasi dengan cukup baik.
sumber
enumerate
.) Saya pikir komentar Anda adalah contoh yang bagus mengapa mencoba meninjau bahasa yang Anda tidak terbiasa harus paling mendidik untuk diri sendiri.Sebagai kontributor tetap di Code Review Stack Exchange , saya menjumpai banyak pertanyaan yang menderita masalah Bahasa-agnostik, misalnya:
dan daftarnya berlanjut. Namun, sementara saya tidak perlu tahu bahasa, saya masih bisa meninjau masalah / poin tersebut.
Beberapa pengguna teratas kami memiliki jawaban teratas dalam bahasa yang tidak mereka gunakan secara aktif, atau tidak tahu. Bahkan dua dari sepuluh saya berada dalam bahasa yang saya tidak tahu atau tidak dapat mengkompilasi / menjalankan pada mesin saya.
Saya bahkan akan mengatakan itu sama dengan meninjau kode semu seseorang. Selama Anda dapat mengamati dan mengomentari hal-hal yang relevan dengan hal-hal yang Anda pahami, Anda akan baik-baik saja, dan itu akan relevan.
sumber
Saran umum
Inilah intinya, menurut saya:
Pertimbangan dan contoh spesifik Python
Untuk situasi spesifik karena tidak mengetahui Python, saya akan sangat waspada terhadap hal ini. Python memiliki banyak idiom dan praktik standar yang akhirnya membuat Python yang baik terlihat sangat berbeda dari apa yang mungkin Anda harapkan dalam bahasa lain. (Memang, saya pikir hal-hal yang ditekankan Python telah membuat kode saya terlihat lebih baik dalam bahasa lain , dan bukan sebaliknya.) Di luar PEP8 memiliki contoh yang baik tentang bagaimana Anda mungkin benar-benar kehilangan pola pikir yang didorong Python.
Mari kita lihat contoh sederhana. Ambil kode ini:
Lihat masalah dengan kode ini? Jika Anda belum pernah bekerja dengan Python, Anda mungkin tidak. Masalahnya adalah bahwa ada banyak gaya disukai di Python yang melakukan persis hal yang sama:
Ini adalah manajer konteks. Apakah Anda tahu apa gunanya? Apakah Anda tahu kapan akan tepat untuk menggunakannya? Apakah Anda tahu kapan waktu yang tepat untuk membuatnya sendiri? Tidak? Maka Anda mungkin belum siap untuk meninjau Python.
Mari kita lihat contoh lain.
Lihat masalahnya? Masalahnya adalah metode ini sama sekali tidak perlu . Anda mungkin harus menggunakan pemahaman saja, ketika operasi ini sesederhana ini:
Jika Anda tidak melihat itu, Anda tidak terbiasa dengan fitur dan idiom Python.
sumber
Mereka mungkin meminta Anda untuk meninjau kode Python secara tepat karena Anda tidak tahu Python . Ada teori manajemen yang berguna untuk memiliki "orang bodoh" dalam tim. Saya tidak menyebut Anda nama yang buruk :) Idenya adalah bahwa sebuah tim mungkin menderita pemikiran kelompok dan mengembangkan visi terowongan. Salah satu cara untuk keluar dari hal ini adalah dengan memasukkan seseorang dalam tim yang anggota tim lainnya akan anggap sebagai "orang bodoh", yaitu seseorang yang tidak mengetahui pokok permasalahannya. Anda akan mengajukan pertanyaan untuk memberi tahu diri Anda sendiri, dan pertanyaan itu akan datang dari sudut pandang yang mungkin tidak pernah dipertimbangkan oleh anggota tim lain.
Anda tidak tahu Python, jadi apa yang tampak biasa bagi para pembuat kode Python mungkin terasa aneh bagi Anda. Anda mungkin menyarankan peningkatan yang tidak pernah dipertimbangkan tim.
sumber
Peninjauan kode bukan tentang mencari variabel dengan ejaan yang salah dan pemformatan yang salah. Jika Anda menggunakan peninjauan kode untuk menemukan hal-hal seperti itu, maka berhentilah membuang-buang waktu dan gunakan alat.
Tinjauan kode adalah tentang meningkatkan desain dan mendeteksi kesalahan umum oleh seorang programmer pemula.
Karena saya memprogram dalam C ++ , dan saya tidak tahu Python cukup baik, saya tidak akan berani untuk meninjau kode Python. Namun saya bisa membantu dengan tinjauan kode Java.
Anda tidak mengatakan dalam bahasa apa Anda memprogram, tetapi saya tidak melihat apa yang dapat Anda kontribusikan dalam tinjauan kode, jika Anda tidak tahu bahasa pemrogramannya.
sumber
Ulasan kode (selain benar-benar mencari kekurangan) adalah pengantar yang baik dari satu anggota tim ke anggota lainnya untuk kode yang ditambahkan atau diubah. Jika Anda adalah pengembang yang berpengalaman , Anda harus dapat membaca cukup untuk memahami apa yang sedang terjadi.
Lihatlah ulasan kode dari sudut pandang pemimpin tim: ada seseorang di sana yang memahami apa yang harus dilakukan oleh aplikasi (logika bisnis), ada seseorang di sana yang memahami kode tersebut (logika implementasi), dan mungkin beberapa orang lainnya ada yang perlu memiliki gagasan tentang bagaimana semua itu cocok bersama.
sumber
Anda seharusnya tidak menjadi satu - satunya peninjau, tetapi ada banyak alasan bagus bagi Anda untuk menjadi salah satu peninjau. Tidak mengetahui bahasanya tidak banyak halangan untuk banyak pertanyaan yang perlu dijawab dalam ulasan kode. Sebagai contoh, saya adalah salah satu dari 20 penjawab teratas dalam tag C # di situs ini, dan saya tidak begitu banyak mengumpulkan hello world di dalam C #.
Beberapa keahlian yang dapat Anda bagikan tanpa tahu bahasa:
Ini juga merupakan cara yang baik untuk mempercepat pada produk baru. Saya baru saja bergabung dengan tim baru, di mana saya tahu bahasa digunakan dengan cukup baik, tetapi tidak tahu domainnya. Berpartisipasi dalam ulasan kode telah membantu saya mempelajari sisi domain dengan lebih baik, meskipun saya belum dapat berkontribusi banyak di sepanjang garis tersebut.
Dalam kasus Anda, ini akan menjadi cara yang baik untuk mempelajari idiom bahasa baru, seperti yang Anda lihat di komentar oleh pengulas lain. Ini adalah hal-hal yang sangat sulit dipelajari dengan cara lain, karena penerjemah Anda tidak peduli apakah kode Anda pythonic atau tidak.
sumber
Ini bisa menjadi situasi yang saling menguntungkan. Saya akan mengatakan bahwa Anda bisa menjadi pengulas yang sangat berharga karena Anda adalah seorang perawan Python yang belum ternoda oleh Kutukan Pengetahuan .
Pikirkan seperti ini: jika kode cukup jelas sehingga bahkan seorang perawan Python dapat memahaminya, maka itu harus kode yang baik. Bagian-bagian yang Anda sulit pahami mungkin kandidat untuk pengerjaan ulang atau komentar yang lebih baik.
Jelas, itu juga akan bermanfaat bagi Anda, karena Anda akan mengambil bahasa baru saat Anda pergi. (Mudah-mudahan, kode yang Anda berikan adalah contoh yang baik untuk dipelajari.) Pengaturan ini harus bekerja dengan baik untuk Python, bahasa yang memiliki reputasi sebagai "kodesemu yang dapat dieksekusi". Jika Anda adalah pengembang yang berpengalaman, maka Anda seharusnya tidak mengalami banyak kesulitan memahami inti dari program Python.
Peringatannya adalah Anda tidak diharapkan menemukan bug yang muncul dari gotcha khusus bahasa . Tetapi menemukan bug bukan satu-satunya tujuan ulasan kode. Jika tidak ada yang lain, Anda akan berpartisipasi dalam transfer pengetahuan hanya dengan mengetahui hal-hal seperti apa yang terjadi dalam kode rekan Anda.
sumber
Saya pernah diminta untuk mengaudit proyek yang dikerjakan oleh subkontraktor dan tampaknya memiliki masalah kinerja yang serius. Saya cukup cepat menetapkan bahwa faktor kritis adalah modul Perl tunggal. Saya belum pernah menemukan Perl sebelumnya dan kami tidak memiliki siapa pun di organisasi yang mengetahuinya, jadi saya mulai mencoba memahaminya sendiri. Saya tidak pernah sampai sejauh memahami detail, tetapi sangat jelas bahwa algoritma yang digunakan adalah kuadrat dalam ukuran data dan ini adalah penyebab semua masalah. Jadi ya, membaca kode dalam bahasa yang Anda tidak sepenuhnya mengerti pasti bisa produktif. Bonusnya adalah Anda mempelajari trik-trik baru saat Anda menggunakannya.
sumber
Beberapa pengamatan:
1) Jika Anda adalah pengembang berpengalaman, Anda akan mengambil Python (atau setidaknya sebanyak yang perlu Anda ketahui), hanya dengan bekerja dengannya. Ini akan menjadi kasus "belajar dengan melakukan." Ini akan sulit pada awalnya, tetapi akan menjadi lebih mudah saat Anda mengambil bahasa. Anggap ini sebagai kesempatan untuk belajar bahasa lain (orang sering belajar bahasa "asing" melalui "pencelupan.")
2) Ada sejumlah orang berharga di situs SE yang "non-teknis," tetapi terampil dengan tata bahasa, komunikasi, dan logika. Orang-orang semacam itu membawa "mata segar" pada subjek, dan membuat sejumlah perbaikan "tanpa otak" yang dilewatkan oleh orang lain, karena mereka terlalu "terikat" pada materi. Anda sedang berkonsultasi mungkin untuk keterampilan non "teknis" (yaitu non Python) Anda seperti logika dan pengetahuan pemrograman secara keseluruhan.
Dan jika Anda belum melakukan banyak tinjauan kode, hampir semua pengalaman tinjauan kode akan membantu Anda sebagai pengembang. Ini terlihat seperti pertandingan yang baik antara keterampilan dan kebutuhan Anda dan kebutuhan tim.
sumber
Itu tergantung pada apa tujuan dari tinjauan itu; yaitu apa yang Anda maksud dengan efektif .
Anda mungkin masih dapat mendeteksi beberapa masalah. Jika Anda hanya mereka yang harus ditinjau dan mereka hanya berharap bahwa Anda memeriksanya membantu beberapa dan mungkin menangkap sesuatu, maka tentu saja. Banyak konsep struktur mirip antara bahasa. Satu khususnya adalah mampu meninjau komentar. Harus dikomentari dengan cukup baik sehingga seorang programmer yang tidak menggunakan bahasa tertentu itu harus tetap dapat merasakan apa yang terjadi. Jika tidak ... maka Anda dapat memberi tahu mereka di mana komentar mereka kurang. Jika itu adalah komentar yang baik ... maka Anda harus dapat meninjau sedikit struktur mereka hanya melalui penjelasan tentang apa yang terjadi daripada benar-benar membaca kode dari apa yang terjadi.
Tetapi Anda tidak akan mungkin mendeteksi banyak masalah lain. Jadi, jika mereka berniat untuk meninjau Anda untuk menentukan apakah ini program yang dibuat dengan baik atau tidak, mereka akan kecewa.
Apakah hasil itu sepadan dengan waktu Anda melakukannya sebagian besar tergantung pada proyek.
sumber