Sepanjang program, Anda akan berakhir dengan beberapa komentar yang menjelaskan kode dan beberapa komentar yang menghapus kode:
// A concise description
const a = Boolean(obj);
//b = false;
Apakah ada metode yang baik untuk mem-parsing yang mana?
Saya telah bermain-main dengan menggunakan 3 /
dan /** */
untuk komentar deskriptif.
Saya juga menggunakan plugin VSCode untuk menyorot //TODO:
dan//FIXME:
javascript
comments
Kartu as
sumber
sumber
///
dan/** ... */
komentar juga digunakan oleh beberapa generator dokumentasi, seperti Doxygen atau JSDoc. Jika Anda menggunakannya atau alat serupa, Anda mungkin tidak dapat menggunakan komentar semacam itu untuk komentar deskriptif yang tidak dimaksudkan untuk menjadi bagian dari dokumentasi.Jawaban:
Ada solusi yang sangat sederhana untuk ini: hapus kode komentar.
Sungguh, hanya ada dua alasan bagus untuk mengomentari kode: untuk menguji sesuatu / melakukan perbaikan, atau untuk menyimpan kode yang mungkin Anda gunakan nanti. Jika Anda menguji atau memperbaiki sesuatu, hapus kode yang berkomentar segera setelah Anda selesai dengan tes atau perbaiki. Jika Anda menyimpan kode yang mungkin Anda gunakan nanti, buatlah kode kelas satu dan letakkan di suatu tempat seperti perpustakaan di mana dapat dimanfaatkan dengan baik.
sumber
Menambahkan ke jawaban yang sangat bagus dari @ RobertHarvey, saya percaya hanya ada satu alasan sah yang pernah saya temui untuk menyimpan kode komentar ke kontrol sumber, bahkan untuk sementara: dalam kasus kode pengganti yang tidak jelas yang tidak boleh atau tidak dapat digunakan sekarang karena alasan tertentu . Meski begitu sebagian besar komentar harus penjelasan, bukan kode penggantian. Ini bisa berupa bug atau fitur bahasa yang belum dianggap stabil. Mungkin terlihat seperti ini:
Dalam hal ini, pekerjaan sudah dilakukan, tetapi Anda belum bisa memanfaatkannya, jadi menghapusnya berarti seseorang harus menemukan kembali nanti. Hal yang sama berlaku untuk solusi suboptimal yang mungkin tampak lebih unggul di hadapannya atau pertukaran timbal balik dengan solusi serupa .
Perhatian: Jangan membuang kode Anda dengan solusi alternatif. Setiap tugas dapat dilakukan dengan berbagai cara tanpa batas, dan tidak hemat biaya untuk menjelajahi ruang ini untuk waktu yang lama untuk setiap perubahan. Ulasan kode dapat menjadi tempat yang baik untuk menemukan komentar yang hilang tersebut, ketika kolega Anda menyarankan perbaikan yang Anda temukan tidak optimal.
sumber
frobnicate(bar)
, sehingga tidak ada yang akan datang dan mencoba untuk "memperbaiki" kode Anda "tidak berlaku". Jadi Anda menunjukkan kepada mereka bahwa Anda tahu bahwa di dunia yang sempurna,frobnicate
fungsinya akan menjadi jalan yang harus ditempuh, tetapi Anda tahu dari pengalaman yang menyakitkan itu tidak bekerja dengan benar. Mungkin tidak ada harapan sama sekali bahwa pihak ketiga bahkan menganggapnya sebagai bug, apalagi diperbaiki; Anda masih perlu memberikan komentar kepada programmer masa depan (termasuk diri Anda) tentang mengapa Anda tidak mengambil pendekatan yang jelas.Hmm, saya membaca pertanyaan ini sedikit berbeda dari Robert yang dengan benar menyatakan bahwa kode yang dikomentari harus dihapus.
Namun, jika Anda mencari konvensi untuk menandai kode untuk dihapus nanti, favorit lama saya adalah:
//b = false; //TODO: remove
Beberapa flag IDE
//TODO:
berkomentar atau dapat diajarkan. Jika tidak, biasanya itu adalah string yang dapat dicari. Yang terbaik adalah mengikuti konvensi apa pun yang telah dibuat oleh toko Anda karena ini dapat dilakukan dengan beberapa cara. Setiap basis kode harus melakukan ini dengan satu cara. Tetap dicari.Tanpa tanda itu cara otomatis untuk melakukan ini adalah dengan kompiler. Jika menghapus komentar menghasilkan kode yang mengkompilasi, itu pasti kode yang berkomentar. Menulis plugin IDE yang memeriksa itu tidak akan sulit. Tapi itu akan meninggalkan kode komentar kereta di belakang.
Inilah sebabnya mengapa lebih baik hanya menandai kode yang dikomentari sebagai kode saat Anda berkomentar. Ini memungkinkan Anda bekerja tanpa merusak saat Anda memutuskan apakah Anda benar-benar ingin itu hilang. Karena kita semua terganggu, dan agak pelupa, jangan heran jika beberapa baris diperiksa saat dalam keadaan itu. Jika mereka melakukannya itu bagus bahwa mereka setidaknya ditandai dengan jelas dan dapat dicari. Makro keyboard telah membantu saya dengan ini di masa lalu. Sulit untuk terganggu di tengah-tengah ini jika Anda dapat melakukannya dengan satu ketukan.
Anda dapat mengambil ini sejauh mengabadikan tanda dalam tes integrasi berkelanjutan Anda. Ups, saya mencoba memeriksa dengan TODO yang luar biasa lagi.
sumber
double buffer (flip on)
-> C prototipe atau bahasa Inggris ultra-singkat? tidak bisa membedakan tanpa konteks, bukan keseluruhan konstruksi yang benar dalam kedua bahasa. Beberapa positif dan negatif palsu tidak dapat dihindari, ketika komentar pada dasarnya tidak membatasi bentuk konten mereka di kedua arah.Saya menggunakan arahan preprosesor untuk menghapus kode, bukan komentar sama sekali:
Ini membuat hal yang sangat mudah untuk dicari, dan stabilo sintaksis saya memperlakukannya sebagai komentar. Saya bahkan dapat menciutkannya menjadi satu baris:
#if FALSE(...)
Anda dapat memperluas gagasan itu untuk memiliki beberapa opsi:
Dan kompilasi pengecekan kesalahan waktu:
Tentu saja, Anda tidak ingin berlebihan dalam hal ini, atau menjadi sulit untuk mengatakan apa yang sebenarnya dikompilasi dan apa yang tidak. Tetapi Anda mendapatkan idenya, dan itu adalah masalah yang sama seperti untuk kode yang dikomentari ... selama Anda hanya menggunakannya secara statis. Jika kondisi Anda dinamis, itu lebih buruk.
Untuk menentukan yang mana dalam basis kode yang ada yang tidak mempertimbangkan masalah ini sama sekali, saya tidak berpikir ada solusi universal. Anda harus menemukan pola sendiri dan mungkin kode regex untuk menemukannya.
sumber
javascript
. Anda dapat melakukan beberapa pra-pemrosesan tetapi akan memperluas kemampuan sistem build dan juga non-standar. Jika Anda tidak memiliki sistem build atau sistem build sama sekali tidak mendukung parsing dan mengeksekusi kode, Anda tidak akan dapat mengimplementasikan solusi ini. Akhirnya, bahkan tidak menjawab pertanyaan - kode yang dikomentari tidak sepenuhnya setara dengan kode yang diaktifkan secara kondisional. Bisa jadi itu adalah sisa yang tidak dimaksudkan untuk diaktifkan.Saya setuju dengan jawaban yang menyatakan bahwa kode lama harus dihapus daripada dikomentari jika memungkinkan, namun saya telah mengamati konvensi untuk beberapa kesempatan ketika kode berkomentar diperlukan.
(Basis saya adalah C # tetapi ini dapat diterapkan ke bahasa sintaksis C misalnya java)
sumber
//
ke kolom pertama, dan karena hampir semua kode diindentasi, hasilnya hampir selalu bahwa komentar dimulai dengan beberapa tab. Komentar normal tidak mendapatkan ruang terdepan dari saya, kecuali sudah ada komentar lain dengan ruang terdepan di sekitarnya. Jadi, metode Anda akan gagal total pada komentar yang saya hasilkan, dan metode apa pun yang dirancang untuk mengenali pola komentar saya akan gagal parah pada Anda.Saya masih menafsirkan pertanyaan yang berbeda, berpikir Anda ingin menemukan kode komentar.
Kode C-style pasti memiliki semi-titik dua di dalamnya sementara komentar tidak mungkin memiliki semi-titik dua di dalamnya. Jadi untuk satu baris kode komentar Anda dapat menggunakan ekspresi reguler ini:
Untuk kode komentar multi-baris bisa jadi
Catatan Visual Studio agak aneh tentang jeda baris dalam ekspresi reguler, mereka tidak dihitung sebagai spasi putih, Anda perlu menentukan \ n eksplisit.
sumber
Jika Anda menggunakan editor dengan kompiler berjalan di latar belakang (seperti Xcode dan Dentang), Anda bisa mencoba mengkompilasi teks komentar. Misalnya "deskripsi ringkas" memberikan kesalahan, "b = false;" tidak. Anda kemudian dapat menggunakan berbagai penyorotan sintaksis.
Metode yang lebih sederhana adalah plugin IDE yang menggunakan beberapa heuristik, seperti beberapa kata dalam satu baris selain dari kata kunci yang menunjuk pada komentar, pencocokan titik kurung kurawal untuk kode dll.
sumber
Jawaban lain mencakup variasi pada tema "jangan komentar kode". Tetapi kadang-kadang Anda masih menginginkannya untuk referensi.
Jika Anda benar-benar membutuhkan kode untuk tetap bertahan, solusi yang lebih baik adalah mengelilingi kode dengan "#jika 0 ... #endif", idealnya dengan komentar untuk mengatakan alasannya. Ini adalah strategi yang direkomendasikan dari berbagai standar pengkodean, termasuk MISRA.
sumber
Sederhana, setidaknya untuk saya - dan di C / C ++. Komentar terlampir di / * * / informatif. Kode uji yang dihapus sementara dikomentari dengan memimpin //.
Dan ada alasan bagus untuk meninggalkan kode tes dalam file tetapi berkomentar, setidaknya dalam jenis pekerjaan yang saya lakukan. Cepat atau lambat seseorang akan menginginkan perubahan yang dibuat, yang membutuhkan kode itu. Membatalkan komentar blok membutuhkan satu perintah editor, seperti halnya mengomentari ulang di mana Anda selesai.
sumber
#ifdef __DEBUG ... #endif
, atau definisi khusus apa pun yang ingin Anda gunakan.__DEBUG
itu bagus, karena Anda sering hanya perlu mengubah konfigurasi proyek untuk mendapatkannya. Tetapi sebagian besar IDE memungkinkan Anda menentukan konfigurasi Anda sendiri, yang dapat memberi Anda apa pun di tempat itu.printf
/cout
atau serupa untuk mendapatkan kode yang baru ditulis dengan benar (yang saya akui telah saya lakukan sendiri di masa lalu), itu benar-benar tidak terlalu efektif untuk membiarkan mereka di sana. Jika seseorang ingin membuat perubahan dan mengetahui variabel mana yang mereka butuhkan info tentang, itu cepat dan mudah untuk menulisprintf
lagi, sedangkan jika dev itu tidak tahu apa yang dibutuhkan dan hanya komentar-komentar semuaprintf
pernyataan itu maka petak besar teks di terminal kemungkinan juga tidak akan membantu mereka.