Untuk beberapa alasan selama pengembangan, saya terkadang berkomentar keluar kode. Karena saya kacau dan kadang-kadang terburu-buru, beberapa di antaranya membuatnya menjadi kontrol sumber.
Saya juga menggunakan komentar untuk memperjelas blok kode.
Contohnya:
MyClass MyFunction()
{
(...)
// return null; // TODO: dummy for now
return obj;
}
Meskipun "berfungsi" dan banyak orang melakukannya dengan cara ini, saya kesal karena Anda tidak dapat secara otomatis membedakan kode komentar dengan komentar "nyata" yang memperjelas kode:
- itu menambah kebisingan ketika mencoba membaca kode
- Anda tidak dapat mencari kode yang dikomentari untuk misalnya hook on-commit dalam kontrol sumber.
Beberapa bahasa mendukung banyak gaya komentar baris tunggal - misalnya dalam PHP Anda dapat menggunakan //
atau #
untuk komentar baris tunggal - dan pengembang dapat sepakat untuk menggunakan salah satu dari ini untuk kode komentar:
# return null; // TODO: dummy for now
return obj;
Bahasa lain - seperti C # yang saya gunakan hari ini - memiliki satu gaya untuk komentar single-line (kan? Saya berharap saya salah). Saya juga telah melihat contoh kode "commenting-out" menggunakan arahan kompiler, yang bagus untuk blok kode besar, tetapi sedikit berlebihan untuk satu baris karena dua baris baru diperlukan untuk arahan:
#if compile_commented_out
return null; // TODO: dummy for now
#endif
return obj;
Jadi, ketika kode komentar terjadi dalam setiap (?) Bahasa, bukankah seharusnya "kode yang dinonaktifkan" mendapatkan sintaksnya sendiri dalam spesifikasi bahasa? Apakah pro (pemisahan komentar / kode yang dinonaktifkan, editor / kontrol sumber bertindak atas mereka) cukup baik dan kontra ("toh tidak boleh melakukan commenting-out", bukan bagian fungsional dari bahasa, potensi keterlambatan IDE (terima kasih Thomas )) layak dikorbankan?
Edit
Saya menyadari contoh yang saya gunakan adalah konyol; kode dummy dapat dengan mudah dihapus karena diganti dengan kode yang sebenarnya.
/# ... #/
itu akan menyoroti berbeda dalam IDE (untuk isyarat visual) dan mungkin menghasilkan compiler peringatan yang kemudian akan terjebak dan dilaporkan oleh membangun malam jika seseorang tidak memeriksa perubahan seperti kembali ke dalam kendali sumber.Jawaban:
Pertama-tama, dalam contoh Anda ada komentar "TODO". Jenis komentar ini istimewa karena terdeteksi oleh IDE (setidaknya Eclipse dan Visual Studio) sebagai penanda untuk "tugas". Tapi saya yakin Anda tahu itu karena Anda menggunakan ini, dan saya kira Anda tidak merujuk mereka ketika Anda menggunakan istilah "kode dinonaktifkan".
Adapun kode yang dinonaktifkan itu sendiri, pendapat saya adalah bahwa itu mencemari kode. Saya menggunakan mekanisme lain untuk melacak apa yang ada sebelumnya: repositori sumber . Kecuali ketika saya berada dalam mode kode / tes / kode / tes ..., saya tidak mengomentari kode yang tidak digunakan, saya menghapusnya. Dan ketika itu terjadi, mengomentari garis X hanya masalah satu pintasan keyboard.
Sunting: jadi ya, saya lupa menjawab pertanyaan eksplisit Anda, saya pikir tidak ada gunanya memiliki komentar khusus untuk kode yang dinonaktifkan. Jika Anda benar-benar ingin menyimpan kode, tetapi katakan "jangan gunakan itu", Anda selalu dapat menandainya sebagai @deprecated tetapi itu bukan poin dari pertanyaan Anda.
sumber
Saya pikir ini adalah akar masalahnya. Menjadi kacau dan terburu-buru hanya akan menimbulkan masalah. Mencari tahu mengapa pengembangan Anda sedang terburu-buru dan tidak terkontrol dengan baik harus menjadi langkah pertama, bukan mencoba mencari kode komentar.
Saya kira tidak. Mengomentari kode adalah praktik yang buruk dan saya tidak berpikir bahasa harus mendorong siapa pun untuk menggunakannya. Ya, orang-orang melakukannya dan saya sudah melihatnya, tetapi saya menolak untuk memeriksa kode saya yang dikomentari. Memberi orang kemampuan untuk dengan mudah mengelola kode lama yang tidak digunakan, berada di luar cakupan bahasa dan merupakan sesuatu yang termasuk dalam ranah kontrol versi.
Saya juga khawatir tentang keterbatasan teknis. Agar ini berfungsi, Anda perlu mengurai komentar dan menentukan apakah komentar tersebut dikomentari sumber atau teks atau menambahkan token baru ke bahasa. Bergantung pada kompleksitas bahasa saat ini, saya tidak sepenuhnya yakin apa dampak ini pada kompilasi (mengidentifikasi apakah suatu baris adalah kode yang valid atau tidak untuk dikompilasi). Selain itu, orang kemudian akan mengharapkan IDE untuk mengelola ini secara real time (apakah ada hubungan antara kompleksitas sintaksis bahasa dan responsif IDE untuk menemukan dan menyoroti berbagai konstruksi dan kesalahan).
sumber
Bahkan jika hanya ada satu sintaks komentar dalam bahasa yang Anda gunakan, Anda masih dapat menambahkan rasa Anda sendiri ke dalamnya, saya telah mengerjakan proyek-proyek di mana // menunjukkan garis yang dinonaktifkan dan // - menunjukkan komentar. Ini tidak sebagus dibangun di dalamnya, tetapi sebagian besar IDE tidak tahu Anda telah menggunakan sintaks yang berbeda untuk tujuan yang berbeda, jadi kadang-kadang cara lama eyeballing untuk melihat perbedaannya paling baik.
sumber
Bertentangan dengan jawaban, saya akan menjawab dengan "YA, harus ada sintaks yang berbeda!"
Saya akan menantang pengembang mana pun untuk mengatakan bahwa mereka menjalani satu hari pengkodean tanpa mengomentari kode. Untuk melakukannya bukan berarti orang tidak tahu kontrol sumber atau malas. Bahkan seperti yang dikatakan Thomas Owens dalam jawaban yang berbeda, " Kecuali ketika saya berada dalam mode kode / tes / kode / tes ..., saya tidak berkomentar kode yang tidak digunakan. "
Berapa banyak waktu Anda dihabiskan dalam mode kode / tes / kode / tes? Bagi saya itu setidaknya 90% pekerjaan! Saat ini saya sedang mengonversi proyek OSX besar ke iOS, dan langkah pertama adalah menonaktifkan semua kode yang melanggar sampai saya memiliki sebuah rintisan yang berfungsi. Untuk minggu-minggu berikutnya saya akan perlahan-lahan menghapus komentar dan memperbaiki kode ketika saya membuatnya berfungsi.
Ada banyak kasus lain juga. Bagaimana dengan ketika Anda menggunakan kode contoh tempat Anda sering menemukan arahan seperti "Batalkan komentar berikut untuk Windows" atau "Batalkan komentar pada baris ini untuk Aplikasi khusus iPhone"?
Ya, saya akan menggunakan kontrol sumber selama ini. Tetapi juga YA, saya ingin ada cara untuk membedakan kode yang dinonaktifkan dari komentar yang sebenarnya.
Singkatnya: Setiap programmer yang mengatakan mereka tidak menggunakan komentar untuk menonaktifkan kode adalah bohong. Ada lebih banyak pengkodean daripada file dipoles yang Anda komit ke HEAD. Ada banyak alasan valid untuk kode yang dinonaktifkan.
Ya akan lebih baik jika ada sintaks (atau setidaknya konvensi) untuk membedakan komentar yang benar dari kode yang dinonaktifkan.
sumber