Apakah baik menyimpan komentar perbaikan bug di dalam kode?


15

Tim saya menggunakan huruf besar sebagai kontrol versi. Proyek yang saya kerjakan tidak dimulai 7-8 tahun yang lalu. Selama masa hidup proyek kami memiliki beberapa rilis paket layanan perbaikan bug dll. Masalah dilacak menggunakan sistem pelacakan bug dan sebagian besar orang yang bekerja pada perbaikan bug mengikuti rutinitas melampirkan komentar di MULAI / AKHIR blok dengan tanggal, penulis, bug-id dll.

Saya merasa ini sangat tidak relevan dan membuat kode berantakan dan tidak nyaman untuk dipelihara dan ini adalah hal-hal yang harus menjadi bagian dari komentar / label check-in dll, di mana kita dapat menyimpan informasi siklus hidup tambahan dari produk kerja.

Apa praktik terbaik yang harus diikuti?

Beberapa pengulas kode bersikeras untuk mengeluarkan komentar tentang bug dan perbaikan untuk memudahkan hidup mereka. Dalam pemahaman saya, mereka harus meninjau file dengan memetakannya ke tampilan dan mendapatkan log perubahan cabang dan memeriksanya. Akan sangat membantu jika saya bisa mendapatkan beberapa praktik terbaik tentang pengiriman kode yang diperbarui untuk ditinjau.


3
Pertanyaan sebenarnya adalah MENGAPA mereka melakukannya seperti itu. Ini mungkin prosedur yang sangat lama dari sebelum kontrol sumber.

@anderson - Saya merasa mereka tidak memiliki pemahaman yang benar tentang penggunaan clearcase ketika diperkenalkan. Sehingga latihan itu mungkin telah mengikuti lebih lanjut ....
sarat

dianggap mencari tahu?


Saya tidak akan mengatakan itu praktik yang buruk. Pokoknya salah satu pengukuran kualitas perangkat lunak adalah persentase komentar melalui kode sumber.
Rudy

Jawaban:


27

Masalah dengan menambahkan perbaikan bug sebagai komentar pada kode adalah, Anda tidak mendapatkan cerita lengkap. Jika saya melihat sepotong baik-baik saja kode tagged "ini adalah fix untuk bug bla ", reaksi pertama saya akan mengatakan "jadi apa?". Kode itu ada, itu berfungsi. Satu-satunya hal yang perlu saya ketahui untuk mempertahankan kode adalah komentar yang memberi tahu saya apa yang dilakukannya.

Praktik yang lebih baik adalah menambahkan referensi perbaikan bug di log komit SCM. Dengan begitu, Anda melihat apa bug itu, di mana bug itu diperkenalkan, dan bagaimana bug itu diperbaiki. Selain itu, ketika waktu untuk rilis tiba, Anda cukup mengekstrak log SCM, dan menambahkan poin-poin yang menyatakan bahwa ada bug, dan itu diperbaiki. Jika cabang atau versi lain memperkenalkan bug yang sama, mudah untuk menemukan perbaikannya, dan mengajukan kembali jika memang hal yang sama.

Setelah mengatakan semua ini, saya juga setuju dengan jawaban Charles. Jika alasan untuk sepotong kode tidak jelas, tentu saja, beri tahu pengelola bahwa kode ada karena suatu alasan, dan harus diperlakukan dengan hati-hati.


Jawaban yang sangat bagus. Saya telah menambahkan beberapa poin lagi ke pertanyaan saya. Silakan periksa dan perbarui jawaban Anda. Terima kasih. BTW, Apakah Anda bisa membantu saya dengan menghapus perintah untuk mendapatkan log komit dari cabang tertentu?
sarat

@Sarath Aku takut aku belum pernah menggunakan ClearCase sebelumnya. Jangan ragu menggunakan superuser untuk bertanya. Saya yakin ada banyak orang yang tahu mau membantu.
Dysaster

4
Pelacak bug yang baik seperti JIRA dapat melihat log komit SCM Anda dan mengeluarkan informasi untuk bug. Bayangkan saja Anda melakukan sesuatu untuk bug, dan pelacak bug secara otomatis menambahkan catatan pada laporan bug yang komit X merujuk bug.

@Andersen - Terima kasih kami menggunakan JIRA. Tapi saya perlu memastikan apakah itu menggunakan dengan benar atau tidak.
sarat

@ Thorbjørn Ah, Anda sudah mudah. Saya harus melakukannya secara manual pada hari itu dengan kombo CVS / Bugzilla (dan kemudian SVN / Bugzilla). Tambahkan referensi perbaikan bug ke komit saya, dan tambahkan referensi komit ke bugzilla. Proses rawan kesalahan, dan pengembang cenderung melupakan satu atau yang lain. Tetapi informasi itu sangat berguna pada beberapa kesempatan.
Dysaster

23

Latihan yang paling buruk. Saya tidak akan mengatakan itu tidak boleh dilakukan. Kadang-kadang Anda mengalami sesuatu seperti bug di API eksternal yang harus Anda atasi. Solusi ini dapat benar-benar mati otak jika Anda tidak tahu tentang bug yang mendasarinya. Dalam hal ini mungkin ide yang baik untuk mendokumentasikan bug dalam kode sehingga rekan kerja atau diri Anda nanti tidak mencoba untuk "memperbaiki" kode mati otak yang jelas.


3
Sepakat. Tambahkan komentar semacam ini ketika mereka menambahkan nilai signifikan. Namun, jangan lakukan itu hanya untuk memutar pegangan.
cepat,

Bagus, ini mendukung gagasan komentar yang mengatakan "Mengapa" ada beberapa kode. Lihat programmers.stackexchange.com/questions/1/…
Gabriel

Saya telah melakukan ini beberapa kali: kode yang, pada pandangan pertama, benar-benar menentang logika ("untuk apa kode ini ada di sini?") Tetapi sebenarnya ada untuk alasan yang sangat bagus, jadi Anda ingin orang-orang berjalan hati-hati di sekitar Itu. Kemudian, menambahkan komentar peringatan yang menjelaskan mengapa kode itu dapat membuat hidup semua orang lebih mudah. Kemudian, jika seseorang dapat memikirkan cara yang lebih baik untuk menyelesaikan masalah asli, semua memuji mereka, saya katakan - mereka tahu mengapa kode braindead diberlakukan, dan apa yang seharusnya dicapai, sehingga jauh lebih mudah untuk mengimplementasikan alternatif. larutan.
CVn

9

Latihan yang buruk. Komentar akan keluar dari tanggal dan mengacaukan kode. Informasi ini masih tersedia dalam riwayat versi sistem SCC Anda jika diperlukan.


3

Kedengarannya seperti latihan yang buruk. Bagaimana jika organisasi Anda memutuskan untuk bermigrasi ke sistem pelacakan bug lain? Jangan ikat produk Anda terlalu erat dengan alat yang sedang Anda gunakan. Alih-alih merujuk ke bug ID tertentu, dan alasan mengapa kode itu terlihat tidak jelas, memotivasi keputusan desain Anda dengan komentar dalam kode.


Ini adalah dikotomi yang salah. Mengapa Anda tidak dapat memiliki komentar desain ("ini sebabnya kami melakukan xy z") bila perlu dan menyebutkan id bug dalam pesan komit?
Matthew Flaschen

Di mana dikatakan bahwa Anda tidak bisa? Saya merujuk ke ID bug dalam kode, bukan VCS yang melakukan pesan.
fejd

Maaf, saya salah paham. Saya pikir Anda mengatakan itu tidak berguna untuk menempatkan id bug di mana saja.
Matthew Flaschen

Tidak masalah, itu artinya jawabanku tidak cukup jelas. :)
fejd

2

Reaksi pertama saya adalah jangan ulangi diri Anda sendiri sehingga keluar dari kode dan masuk ke log SCM. Kami telah melakukan diskusi serupa di sini tentang komentar revisi untuk fungsi, nama penulis dan tanggal pembuatan untuk file dan fungsi. Di masa lalu (sebelum SCM digunakan) semua informasi ini disimpan dalam file untuk dapat merekonstruksi evolusi file.

Sekitar setengah dari pengembang menginginkan informasi ini agar dapat memiliki semua informasi di satu tempat (ini memicu mereka untuk mencari perubahan dalam SCM). Setengah lainnya dari pengembang tidak memulai pencarian mereka untuk petunjuk tentang apa yang berubah di coe, tetapi dari SCM sehingga mereka tidak memerlukan informasi dalam kode. Kami belum memutuskan apa yang harus dilakukan dengan komentar-komentar itu. Ini sangat tergantung pada cara orang bekerja dan beberapa orang sangat keras kepala meninggalkan metode yang dikenal. Hal yang sama tentang mengomentari blok kode dan meninggalkannya di dalam kode selamanya.


Saya kira kode yang dikomentari harus diperiksa oleh SCM dan menolak untuk bahkan berkomitmen ... Itu menambah kekacauan pada kode hanya demi mendapatkan 5 menit pencarian dalam sejarah SCM jika suatu hari hipotetis di masa depan Anda membutuhkannya kembali.
Julien Roncaglia

Setuju tetapi coba terapkan itu di sourcesafe: D Dalam tim proyek kami, kami telah bekerja dengan ulasan, jadi untuk saat ini blok tersebut ditolak oleh pengulas.
refro

Oh SourceSafe ... maaf untuk Anda dan tim Anda.
Julien Roncaglia

Jangan, ini lebih baik daripada tidak sama sekali. Dan saat ini semua pengembangan baru dilakukan dengan Subversion sehingga setiap bulan saya memiliki lebih sedikit hubungannya dengan sourcesafe.
refro

1

Hanya untuk menambah apa yang Dyaster et al. telah mengatakan, meskipun JIRA memiliki kemampuan yang sangat bagus untuk menampilkan perubahan yang terkait dengan perbaikan bug, tempat terbaik mutlak untuk mendokumentasikan perbaikan bug adalah dalam kasus uji. Jika kode tidak jelas tanpa komentar yang menunjukkan bug apa yang diperbaiki, itu "bau kode". Yang mengatakan, jika Anda tidak punya waktu untuk membersihkan bau, komentar harus merujuk pada test case, di mana seharusnya jauh lebih jelas mengapa kodenya melakukan apa yang dilakukannya. Jika Anda tidak punya waktu untuk menulis test case yang menjelaskan perbaikan bug, maka bug tersebut belum benar-benar diperbaiki, hanya ditunda.


1

Saya setuju dengan menambahkan id perbaikan bug dalam pesan komit, dan tidak di dalam kode itu sendiri. Pelacak bug yang secara otomatis mengikis pesan komit untuk id bug sangat berguna.

Selain itu, Anda dapat menggunakan perintah menyalahkan / membubuhi keterangan / pujian dari sistem kontrol versi Anda untuk membantu mengganti komentar ini. Kemudian, ketika Anda menjalankan sesuatu seperti:

vcs blame file.ext

Anda dapat melihat informasi yang berguna, biasanya termasuk siapa yang mengubah setiap baris, ketika mereka mengubahnya, dan id komit. Dari id komit, Anda bisa mendapatkan pesan lengkap, yang harus menyertakan id bug.

Sistem VCS yang baik akan membuat Anda mengabaikan spasi ketika menghitung siapa yang mengubah garis.

Saya tidak tahu apa yang dimiliki Clear Case untuk fitur ini.

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.