Teka-teki: Selama bekerja pada fitur baru atau memperbaiki cacat, Anda menemukan masalah warisan dalam kode. Apa yang harus anda lakukan Memperbaikinya dan berisiko mengubah perilaku kode. Entah itu telah bekerja sampai sekarang oleh beberapa kebetulan, atau kalau tidak cacat tidak terdeteksi atau layak waktu siapa pun untuk melaporkan. Jika Anda membiarkannya sendiri dan membiarkan masalah membuat kode lebih sulit untuk dikerjakan nanti? Memperbaiki masalah hanya akan menambah waktu tugas asli Anda dan memaksa Anda untuk melakukan uji regresi. Sedikit yang akan menghargai pekerjaan itu. Namun, memperbaikinya tampaknya benar. Kode dengan lebih sedikit masalah lebih mudah untuk diperbaiki dan dikembangkan.
Saya telah menemukan diri saya dalam situasi ini berulang kali saat kami berupaya memodernisasi aplikasi web. Saya tidak tahu apakah saya bersikap obsesif atau terhormat ketika saya pergi bersusah payah mengerjakan bug lama ini. Bagaimana Anda menangani situasi ini?
Terima kasih, Corey
Jawaban:
Saya bekerja di tim yang sangat kecil, jadi itu tergantung pada apa perubahannya:
Jika ini adalah perbaikan bug yang kecil dan jelas, saya pasti akan melakukannya. Saya juga memberikan komentar tambahan jika saya harus bekerja melalui kode orang lain dan perbaikan kecil lainnya yang berada di bawah "aturan boyscout" kepada saya.
Jika kodenya terjalin sedemikian rupa sehingga Anda harus bertanya "Apakah mengubah ini akan merusak sesuatu dan memerlukan pengujian" maka tidak, Anda tidak boleh mengubahnya. Bawa itu di sistem pelacakan bug Anda jika itu membuat Anda khawatir.
Ini, kebetulan, itulah sebabnya saya mencoba kode metode yang lebih kecil dengan tipe-tanda tangan yang lebih jelas juga. Jika Anda tahu tidak ada efek samping dan dapat membuat seluk-beluk cocok, Anda dapat memperbaiki, mengatur ulang, atau mengubah kode interior apa pun tanpa risiko.
Tapi jangan merasa kurangnya penghargaan adalah alasan untuk tidak memperbaiki bug yang Anda temukan atau meningkatkan basis kode dengan alasan apa pun. Jika tidak ada yang lain, Anda bersikap baik terhadap masa depan Anda yang pasti akan kembali ke sana untuk memperbaiki sesuatu yang lain.
EDIT: Anda juga perlu mengawasi waktu Anda di proyek. Jelas di bawah tenggat waktu yang ketat, Anda harus fokus untuk menyelesaikan pekerjaan utama, tetapi jika Anda hanya di bawah "beban normal" maka saya pikir sedikit membersihkan di sana-sini membuat semua orang lebih bahagia dalam jangka panjang.
sumber
Seperti biasa, itu tergantung.
Pada dasarnya Anda melakukan penilaian risiko: apa risiko berubah vs tidak berubah. Jika Anda merasa tidak punya cukup pengalaman (dengan pemrograman pada umumnya, atau sistem khususnya) tanyakan orang lain dalam tim.
sumber
Programmer Pragmatis menyebutnya 'Windows Rusak'.
Jika Anda tidak memperbaiki jendela yang rusak maka ada kecenderungan mereka membuat spiral kualitas kode yang menurun. Dan semakin banyak dari mereka ada pekerjaan yang lebih besar untuk memperbaikinya, dan oleh karena itu kecil kemungkinan mereka akan diperbaiki.
Apakah memperbaikinya sekarang atau nanti tergantung pada penilaian. Apakah ini perbaikan sederhana? Apakah Anda yakin kode melakukan apa yang Anda pikir itu? Apakah mungkin mengalihkan perhatian dari tugas Anda saat ini? Apakah Anda di bawah batasan waktu? Apakah mungkin akan ada lebih banyak bug?
Paling tidak, tandai item di sistem pelacakan Anda dan pastikan itu diperbaiki nanti. Penting untuk menandainya di sistem pelacakan bahkan jika Anda memutuskan untuk memperbaikinya sekarang, untuk memastikan bahwa itu diuji juga, dan untuk mendokumentasikan perubahan.
sumber
Jika itu adalah bug yang jelas, seperti sesuatu yang akan melanggar keamanan, merusak data, atau meningkatkan pengecualian yang ditampilkan kepada pengguna, maka perbaiki. Jika tidak, tanyakan seseorang yang tahu basis kode lebih baik dari Anda.
sumber
Itu tergantung, jika ini adalah bug kecil di mana Anda yakin bahwa perbaikan Anda memiliki dampak rendah maka secara pribadi saya akan memperbaikinya sebagai bagian dari pekerjaan lain dan kemudian memberi tahu PM.
Jika ada risiko terhadap klien, pengguna atau perusahaan membawanya ke Manajer Proyek dan mendiskusikan kursus ke depan. Adalah tugas mereka untuk mengevaluasi risiko sehingga membawanya ke perhatian mereka dan kasus untuk memperbaikinya. Kemudian hormati keputusan mereka.
sumber
Penguji kami membenci ini. Kecuali sangat sepele, kami mencatatnya di database bug, kemudian mengalokasikannya untuk rilis dan menulis tes regresi. Jika pengembang hanya akan membuat perubahan yang tidak sesuai jadwal, bagaimana Anda bisa memenuhi tenggat waktu?
sumber
Saya pernah berada di tim di mana cacat non-kritis atau pelanggaran standar diajukan sebagai cacat "Kode Lemah". Saya akan mengatakan bahwa orang yang menemukan cacat kritis memiliki tanggung jawab untuk melemparkan semacam bendera
sumber
itu tergantung pada bug. perhatian utama adalah memperkenalkan bug baru. Lebih baik berurusan dengan masalah yang diketahui daripada yang tidak diketahui. Jika sederhana, katakan perubahan teks, atau kesalahan logika sederhana, kami memperbaikinya, jika tidak biarkan saja.
Satu hal yang perlu diperhatikan, kami adalah toko kecil yang terdiri dari 4 dev dan magang dan bug yang saya perbaiki mungkin adalah bug yang saya buat.
sumber
Jika kodenya jelas salah, perbaikannya cukup mudah dan Anda yakin risiko berdampak pada pengguna rendah, maka lakukanlah. Itu datang ke penilaian profesional.
Anda harus ingat bahwa jika Anda telah menemukannya maka mungkin pengguna belum, atau mereka akan melaporkannya. Daripada menghabiskan waktu memperbaiki masalah yang mungkin tidak pernah ditemui oleh pengguna, Anda mungkin lebih baik menghabiskan waktu itu memperbaiki masalah yang menyebabkan masalah pengguna Anda sekarang.
sumber
Dokumentasikan pengamatan dengan baik, dan putuskan apakah akan memperbaikinya nanti.
Adakan beberapa diskusi formal (misalnya, dalam pertemuan reguler) atau diskusi informal (misalnya, saat makan siang) dengan kolega Anda, dan buat perubahan setelah Anda lebih percaya pada perilaku kode yang akan Anda perbaiki.
Meskipun tampaknya bug / cacat bagi Anda, itu sebenarnya mungkin menjadi "fitur" saat ini. Ini bisa menjadi solusi yang diimplementasikan dengan buruk untuk mengatasi beberapa kasus sudut pada menit terakhir dari rilis sebelumnya, dan "perbaikan bersih" Anda dapat menghidupkan kembali beberapa masalah yang sebelumnya diselesaikan.
sumber
Saya akan melawan tren di sini. Kecuali jika Anda berada dalam fase pengembangan prototipe paling awal, Anda tidak boleh segera memperbaikinya, Anda harus mengajukan laporan bug. Ini memiliki beberapa keunggulan:
sumber