Beberapa pernyataan di bawah ini cukup pribadi, meskipun dengan beberapa pembenaran, dan dimaksudkan seperti ini.
Jenis Komentar
Untuk versi singkat ... Saya menggunakan komentar untuk:
- mengekor komentar yang menjelaskan bidang dalam struktur data (selain dari itu, saya tidak benar-benar menggunakan komentar satu baris)
- komentar multi-garis yang luar biasa atau berorientasi tujuan di atas blok
- pengguna publik dan / atau dokumentasi pengembang dihasilkan dari sumber
Baca di bawah untuk detailnya dan (mungkin tidak jelas) alasannya.
Komentar Terakhir
Bergantung pada bahasanya, baik menggunakan komentar baris tunggal atau komentar multi baris Mengapa itu tergantung? Itu hanya masalah standardisasi. Ketika saya menulis kode C, saya menyukai kode ANSI C89 kuno secara default, jadi saya lebih suka selalu memilikinya /* comments */
.
Oleh karena itu saya akan memiliki ini di C sebagian besar waktu, dan kadang-kadang (tergantung pada gaya basis kode) untuk bahasa dengan sintaks mirip C:
typedef struct STRUCT_NAME {
int fieldA; /* aligned trailing comment */
int fieldBWithLongerName; /* aligned trailing comment */
} TYPE_NAME;
Emacs baik dan melakukan itu untukku M-;
.
Jika bahasa mendukung komentar baris tunggal dan bukan berbasis C, saya akan lebih cenderung menggunakan komentar baris tunggal. Kalau tidak, aku takut sekarang aku sudah terbiasa. Yang tidak selalu buruk, karena memaksa saya untuk ringkas.
Komentar Multi-Baris
Saya tidak setuju dengan ajaran Anda menggunakan komentar single-line karena ini lebih menarik secara visual. Saya menggunakan ini:
/*
* this is a multi-line comment, which needs to be used
* for explanations, and preferably be OUTSIDE the a
* function's or class' and provide information to developers
* that would not belong to a generated API documentation.
*/
Atau ini (tapi saya tidak sering melakukannya lagi, kecuali pada basis kode pribadi atau kebanyakan untuk pemberitahuan hak cipta - ini adalah sejarah bagi saya dan berasal dari latar belakang pendidikan saya. Sayangnya, sebagian besar IDE mengacaukannya ketika menggunakan format otomatis) :
/*
** this is another multi-line comment, which needs to be used
** for explanations, and preferably be OUTSIDE the a
** function's or class' and provide information to developers
** that would not belong to a generated API documentation.
*/
Jika perlu, maka saya akan berkomentar inline menggunakan apa yang saya sebutkan sebelumnya untuk komentar tertinggal, jika masuk akal untuk menggunakannya dalam posisi trailing. Pada kasus pengembalian yang sangat khusus, misalnya, atau untuk dokumen switch
's case
pernyataan (jarang, saya tidak menggunakan beralih sering), atau ketika saya mendokumentasikan cabang di if ... else
aliran kontrol. Jika itu bukan salah satunya, biasanya blok komentar di luar ruang lingkup yang menguraikan langkah-langkah fungsi / metode / blok lebih masuk akal bagi saya.
Saya menggunakan ini sangat luar biasa, kecuali jika pengkodean dalam bahasa tanpa dukungan untuk komentar dokumentasi (lihat di bawah); dalam hal ini mereka menjadi lebih umum. Tetapi dalam kasus umum, itu hanya untuk mendokumentasikan hal-hal yang dimaksudkan untuk pengembang lain dan merupakan komentar internal yang benar-benar harus benar-benar menonjol. Misalnya, untuk mendokumentasikan blok kosong wajib seperti blok "terpaksa" catch
:
try {
/* you'd have real code here, not this comment */
} catch (AwaitedException e) {
/*
* Nothing to do here. We default to a previously set value.
*/
}
Yang sudah jelek bagi saya tetapi saya akan mentolerir dalam beberapa keadaan.
Komentar Dokumentasi
Javadoc & al.
Saya biasanya menggunakannya pada metode dan kelas untuk mendokumentasikan versi memperkenalkan fitur (atau mengubahnya) terutama jika itu untuk API publik, dan untuk memberikan beberapa contoh (dengan kasus input dan output yang jelas, dan kasus khusus). Meskipun dalam beberapa kasus kasus unit mungkin lebih baik untuk mendokumentasikan ini, tes unit tidak selalu dapat dibaca manusia (tidak peduli apa pun DSL yang Anda gunakan).
Mereka sedikit mengganggu saya untuk mendokumentasikan bidang / properti, karena saya lebih suka mengekor komentar untuk ini dan tidak semua kerangka kerja generasi dokumentasi mendukung komentar dokumentasi. Doxygen memang, misalnya, tetapi JavaDoc tidak, yang berarti Anda memerlukan komentar teratas untuk semua bidang Anda. Saya dapat bertahan meskipun demikian, karena garis Jawa relatif panjang di sebagian besar waktu, jadi komentar tambahan akan menyeret saya keluar secara merata dengan memperluas garis di luar batas toleransi saya. Jika Javadoc akan mempertimbangkan untuk meningkatkan itu, saya akan jauh lebih bahagia.
Kode Komentar-Keluar
Saya menggunakan single-line hanya untuk satu alasan, dalam bahasa seperti C (kecuali jika mengkompilasi untuk ketat C, di mana saya benar-benar tidak menggunakannya): untuk mengomentari hal-hal saat pengkodean. Sebagian besar IDE harus beralih untuk komentar baris tunggal (selaras pada indentasi, atau pada kolom 0), dan itu cocok dengan use case untuk saya. Menggunakan toggle untuk komentar multi-baris (atau memilih di tengah-tengah baris, untuk beberapa IDE) akan membuatnya lebih sulit untuk beralih di antara komentar / tanda komentar dengan mudah.
Tapi karena saya menentang kode commented-out di SCM, itu biasanya sangat singkat karena saya akan menghapus potongan-potongan commented sebelum melakukan. (Baca jawaban saya untuk pertanyaan ini pada "komentar in-line dan SCM yang diedit oleh ) "
Gaya Komentar
Saya biasanya cenderung menulis:
- lengkapi kalimat dengan tata bahasa yang benar (termasuk tanda baca) untuk komentar dokumentasi, karena seharusnya dibaca nanti dalam dokumen API atau bahkan sebagai bagian dari manual yang dihasilkan.
- diformat dengan baik tetapi lebih longgar pada tanda baca / huruf besar untuk blok komentar multi-baris
- membuntuti blok tanpa tanda baca (karena ruang dan biasanya karena komentarnya singkat, yang lebih mirip pernyataan yang ditulis dalam tanda kurung)
Catatan tentang Pemrograman Literate
Anda mungkin ingin tertarik pada Pemrograman Sastra , seperti yang diperkenalkan dalam makalah ini oleh Donald Knuth .
Paradigma pemrograman melek huruf, [...] merepresentasikan perpindahan dari penulisan program dengan cara dan ketertiban yang diberlakukan oleh komputer, dan sebagai gantinya memungkinkan programmer untuk mengembangkan program dalam urutan yang dituntut oleh logika dan aliran pemikiran mereka. 2 Program melek ditulis sebagai eksposisi logika yang tidak terputus dalam bahasa manusia biasa, seperti teks esai [...].
Alat pemrograman melek digunakan untuk mendapatkan dua representasi dari file sumber melek: satu cocok untuk kompilasi lebih lanjut atau eksekusi oleh komputer, kode "kusut", dan satu lagi untuk dilihat sebagai dokumentasi yang diformat, yang dikatakan "ditenun" dari sumber melek.
Sebagai catatan dan contoh: Kerangka JavaScript underscore.js , meskipun ketidakpatuhan dengan gaya komentar saya, adalah contoh yang cukup bagus dari basis kode dokumen yang baik dan sumber beranotasi yang terbentuk dengan baik - meskipun mungkin bukan yang terbaik untuk digunakan sebagai referensi API).
Ini adalah konvensi pribadi . Ya, saya mungkin aneh (dan Anda mungkin juga). Tidak apa-apa, selama Anda mengikuti dan mematuhi konvensi kode tim Anda ketika bekerja dengan teman sebaya, atau tidak secara radikal menyerang preferensi mereka dan hidup bersama dengan baik. Ini adalah bagian dari gaya Anda, dan Anda harus menemukan garis tipis antara mengembangkan gaya pengkodean yang mendefinisikan Anda sebagai pembuat kode (atau sebagai pengikut aliran pemikiran atau organisasi yang Anda hubungkan) dan menghormati konvensi kelompok untuk konsistensi. .
:3,7 Align //
untuk menyelaraskan komentar pada baris 3-7.