Tampaknya tidak hanya dalam satu bahasa bahwa komentar tidak dapat disarangkan. Apakah Anda punya solusi yang baik untuk masalah ini? Salah satu solusi di C / C ++ dan Java adalah dengan hanya menggunakan komentar single-line tetapi menjadi mustahil untuk berkomentar di blok yang lebih besar. Saya menghadapi sesuatu seperti ini:
</li><!--
<li><!-- Save -->
Jadi saya harus secara manual melalui dan mengedit komentar. Bisakah Anda memberi saran bagaimana kami harus menangani ini, dalam banyak bahasa? Saya tidak yakin tetapi mungkin python memiliki solusi untuk ini dengan '''
cara yang mungkin dapat memasukkan #
komentar dalam python? `
'''
dan"""
yang string literal . Kebetulan interpreter akan mengevaluasinya selama kompilasi (untuk bytecode) dan mengenali string literal sebagai no-ops (karenanya mereka tidak memperlambat eksekusi bytecode / waktu pemuatan). Docstrings, yaitu string literal tepat setelah tandadef
tetapi sebelum tubuh, tidak dilucuti karena penerjemah mengasumsikan mereka menyediakan dokumentasi untuk fungsi tersebut.#if 0
<code>#endif
. Jadi ini bukan masalah. Menggunakan komentar untuk melakukan ini adalah alat yang salah.Jawaban:
Solusi terbaik, tentu saja, tidak hanya membuat sarang komentar Anda. Komentar bersarang biasanya merupakan tanda bahwa Anda menggunakan komentar yang salah. Contoh paling umum adalah kode commented-out yang berisi komentar itu sendiri, dan perbaikannya adalah menghapus kode alih-alih berkomentar.
Yang mengatakan, banyak bahasa pemrograman memiliki lebih dari satu jenis sintaks komentar, dan Anda dapat menggunakan fakta ini untuk bersarang setidaknya satu tingkat dalam. Misalnya, di Jawa:
Selain itu, dalam banyak bahasa, setidaknya satu jenis komentar cukup baik; dalam bahasa mirip-C, komentar baris di dalam komentar baris diabaikan:
Sebagian besar IDE mendukung mengomentari seluruh blok kode dengan komentar baris dalam satu tindakan, dan mereka menangani gaya komentar seperti ini dengan benar. Contoh yang sama dengan Python:
Seringkali, standar pengkodean untuk proyek tertentu memiliki aturan tentang gaya komentar mana yang digunakan saat; konvensi umum adalah dengan menggunakan komentar blok (
/* */
) untuk metode dan dokumentasi kelas, dan komentar sebaris (//
) untuk komentar di dalam tubuh metode dan semacamnya, misalnya:Dengan gaya seperti itu, kecil kemungkinan Anda perlu menyarang
/* */
komentar (jika Anda harus menonaktifkan sementara seluruh metode atau kelas, mengubah nama mereka berfungsi dengan baik, jika tidak lebih baik); dan//
komentar lakukan sarang, setidaknya dengan sedikit bantuan dari IDE Anda.Akhirnya, untuk menonaktifkan kode, Anda memiliki opsi lain dalam banyak bahasa pemrograman; misalnya, dalam C, Anda dapat memanfaatkan preprosesor:
Dalam bahasa yang dinamis, Anda seringkali dapat menggunakan
if
pernyataan reguler sebagai gantinya:Namun, tidak seperti contoh CPP, strategi ini membutuhkan file sumber secara keseluruhan valid secara sintaksis, sehingga sejauh ini tidak fleksibel.
Dan akhirnya, setidaknya ada beberapa bahasa yang memungkinkan untuk komentar bersarang. Jika Anda tertarik, wikipedia memiliki bagan perbandingan yang bagus .
sumber
// And now for something completely different...
C dan C ++ memang memiliki komentar blok bersarang:
Banyak editor yang menyoroti memahami ini sebagai komentar dan banyak lainnya setidaknya akan menyorotnya sebagai kode lain yang dinonaktifkan.
Dalam banyak bahasa lain Anda harus bergantung pada dukungan editor. Untuk bahasa yang hanya memiliki komentar berbasis garis (perl, python, ruby, shell ...) agak mudah untuk menambahkan karakter komentar ke semua baris dalam rentang, sehingga sebagian besar editor dapat melakukan ini. Anda masih dapat mengetahui apa yang menjadi komentar sebelum mengomentari seluruh blok karena karakter komentar berlipat ganda - melakukannya hanya merupakan keuntungan di sini.
XML dan SGML mungkin adalah rasa sakit terbesar, definisi komentarnya hanya bodoh. Komentar akan sepele untuk sarang, tetapi mereka tidak hanya tidak, itu benar-benar dilarang untuk memiliki
--
komentar di dalam. Sayangnya saya tidak tahu editor mana yang memiliki dukungan yang baik untuk berkomentar di SGML / XML.sumber
#if _
yang berfungsi dengan baik dan menjadi abu-abu di VS saya dengan Re #. Tip yang bagus!Meskipun bukan solusi umum, dan tentu saja tidak ideal, salah satu cara untuk mengatasi masalah khusus ini adalah dengan menggunakan bahasa pemrosesan templat sisi server untuk melakukan blokir komentar untuk elemen komentar kode bersarang. Ini membuat konten pada dasarnya tetap utuh, tetapi mencegah pengirimannya ke browser klien.
Itu tidak banyak membantu jika file tersebut adalah konten yang lurus dan murni yang tidak memerlukan pemrosesan sisi server lainnya. Dalam hal itu dan kasus yang lebih umum dari komentar bersarang, tanyakan mengapa Anda ingin melakukan itu. Dalam sebagian besar kasus itu, orang mungkin menemukan bahwa cara terbaik untuk menanganinya adalah dengan tidak menangani semuanya. Dengan kata lain, jika Anda ingin menghilangkan bagian, maka hilangkan itu, dan biarkan kontrol versi menangani mengingat perbedaan jika bagian itu sebagai artefak perlu dibangkitkan.
sumber
Dalam kasus HTML / XML Anda dapat menggunakan instruksi pemrosesan yang tidak ada: lihat jawaban saya di SO
sumber
Swift mendukung komentar bersarang sehingga "itu muncul bukan hanya dalam satu bahasa yang komentarnya tidak bisa disarangkan" bukan lagi pernyataan yang benar. Jika Anda tidak puas dengan kurangnya dukungan untuk komentar bersarang dalam bahasa pemrograman Anda, saya sarankan mencoba Swift.
Bahasa Pemrograman Swift: Dasar-Dasar
sumber
Bahasa Pemrograman D memiliki komentar bertumpuk bawaan:
Dengan kata lain,
/+
dan+/
komentar sarang.sumber