Kode sudah ditulis, dan upaya telah dilakukan
Itu juga tidak perlu. Jika Anda tidak menggunakannya untuk apa pun, itu (menurut definisi) tidak berguna, terlepas dari apa yang dilakukannya atau berapa banyak usaha yang dihabiskan untuk itu.
Kode dapat diuji pada lingkungan sintetik dan nyata
Jika tidak berguna, itu masih tidak berguna bahkan jika Anda telah mengujinya. Jika kode tidak berguna, pengujian untuk kode tersebut juga tidak berguna (jadi menyimpan kode yang diberi komentar di sana, menciptakan ambiguitas - apakah Anda menyimpan pengujian? Jika Anda memiliki kode klien dari kode yang diberi komentar, apakah Anda juga mengomentari kode klien? )
Jika diatur dengan baik (dikelompokkan, paket terpisah, digabungkan secara longgar dll) itu tidak mengganggu Anda pada keseluruhan analisis kode atau pemfaktoran ulang
Tidak begitu. Semua alat Anda (kontrol sumber, analisis statis, ekstraktor dokumentasi, kompiler, dll) akan berjalan lebih lambat, karena mereka harus memproses lebih banyak data (dan sebagian besar atau lebih kecil dari data itu adalah noise).
Jika kode tidak diatur dengan baik di sisi lain, itu akan mengacaukan analisis statis, pemfaktoran ulang, dan lainnya.
Anda memasukkan suara ke masukan alat Anda dan berharap mereka mengatasinya dengan benar.
Bagaimana jika alat analisis statis Anda menghitung rasio komentar / kode? Anda baru saja mengacaukannya, dengan sesuatu yang relevan hingga kemarin (atau setiap kali kode itu dikomentari).
Yang paling relevan dari semuanya, blok kode yang diberi komentar menyebabkan penundaan dalam memahami kode untuk pemeliharaan dan pengembangan lebih lanjut dan penundaan semacam itu hampir selalu menghabiskan banyak biaya. Tanyakan pada diri Anda ini: Jika Anda perlu memahami implementasi suatu fungsi, apa yang lebih Anda sukai? dua baris kode yang jelas, atau dua baris kode dan dua puluh enam komentar yang tidak lagi aktual?
Kode dapat digunakan di masa depan
Jika ya, Anda akan menemukannya di SCM pilihan tim Anda.
Jika Anda menggunakan SCM yang kompeten dan mengandalkannya untuk menyimpan kode yang mati (alih-alih mengacaukan sumbernya), Anda seharusnya tidak hanya melihat siapa yang menghapus kode itu (pembuat komit), tetapi untuk alasan apa (komit pesan), dan apa lainnya perubahan dibuat bersamaan dengan itu (sisa perbedaan untuk komit itu).
Saat dihapus, penulis mungkin merasa tidak nyaman
Begitu?
Anda (saya berasumsi) adalah seluruh tim pengembang yang dibayar untuk membuat perangkat lunak terbaik yang Anda tahu caranya, bukan "perangkat lunak terbaik yang Anda tahu cara melakukannya tanpa melukai perasaan X".
Ini adalah bagian dari pemrograman, yang sebagian besar kode yang ditulis pada akhirnya akan dibuang; misalnya, Joel Spolsky mengatakan di beberapa titik bahwa untuk perusahaannya, sekitar 2% dari kode tertulis melihat produksi.
Jika Anda memprioritaskan ego developer daripada kualitas code base, Anda akan mengorbankan kualitas produk Anda, untuk ... apa sebenarnya? Mempertahankan ketidakdewasaan sesama pengembang? Melindungi ekspektasi kolega Anda yang tidak realistis?
Sunting: Saya telah melihat satu alasan yang valid untuk meninggalkan kode yang dikomentari di sumbernya, dan ini adalah kasus yang sangat spesifik: ketika kode ditulis dalam bentuk yang aneh / tidak intuitif dan cara yang bersih untuk menulis ulang tidak bekerja untuk alasan yang sangat halus. Ini juga harus diterapkan hanya setelah upaya berulang kali dilakukan untuk memperbaiki masalah dan setiap kali upaya tersebut kembali memunculkan cacat yang sama. Dalam kasus seperti itu, Anda harus menambahkan kode intuitif yang diberi komentar sebagai komentar, dan menjelaskan mengapa itu tidak berfungsi (sehingga pengembang di masa mendatang tidak akan mencoba perubahan yang sama lagi):
// note by <author>: the X parameter here should normally
// be a reference:
// void teleport(dinosaur& X);
// but that would require that we raise another dinosaur and
// kill it every twelve hours
// as such, the parameter is passed by value
void teleport(dinosaur X);