Saya ingin mendokumentasikan kode saya sehingga ada kebutuhan minimum untuk membaca dan menelusuri kode lagi beberapa bulan kemudian.
Saya tahu bahwa ada berbagai jenis dokumentasi (dalam kode sumber dan di luar, diagram urutan, dan sebagainya).
Saya hanya ingin tahu apa cara yang efisien untuk mendokumentasikan kode saya sehingga, ketika beberapa bulan kemudian saya ingin melihat kode saya, saya menghabiskan lebih sedikit waktu untuk membaca kode dan memahami aliran kode.
Jawaban:
Saya harus mengakui bahwa saya tidak setuju dengan beberapa hal yang direkomendasikan oleh jawaban yang lain, jadi saya akan melemparkan dua sen saya;
Komentar
Dokumentasi sangat membantu bagi orang asing yang membaca kode Anda. Biasanya banyak hal tidak cukup verbal untuk dibaca dan dipahami dengan segera, dan Anda harus menjelaskan apa yang Anda lakukan.
Sunting : diskusi di bagian komentar menunjukkan sesuatu yang benar - komentar berlebihan biasanya dilakukan saat menulis kode yang buruk .
Mengomentari pekerjaan Anda harus tepat dan minimal, tetapi, menurut saya, pasti harus ada. Setidaknya komentar untuk setiap 15 baris kode. Misalnya, di atas blok pada kode, tambahkan baris tentang apa yang Anda lakukan:
Komentar minimal yang menjelaskan mengapa dan apa yang Anda lakukan sangat membantu di seluruh kode. Saya tidak setuju dengan jawaban yang menyatakan
Sering kali, dengan anggun, kode yang baik didokumentasikan. Benar bahwa programmer yang buruk melihat dokumentasi mereka seperti "Baiklah, kode saya jelek, mari kita tambahkan beberapa kalimat untuk membuatnya lebih jelas".
Ya, dan sementara ini terjadi cukup banyak, juga benar bahwa programmer yang baik yang menulis kode bersih juga ingin memastikan bahwa mereka kembali ke kode mereka dan memahami mengapa mereka ingin fungsi mereka berperilaku seperti itu, atau mengapa mereka membutuhkannya garis yang sepertinya agak berlebihan, dll ...
Ya, komentar yang menjelaskan hal-hal yang jelas, komentar yang tidak jelas, komentar yang hanya disatukan untuk memastikan bahwa "kode ini didokumentasikan, ya, apa pun", adalah kode bau. Mereka membuat membaca kode lebih sulit dan menjengkelkan. (Menambahkan contoh di bawah)
Tetapi komentar yang sesuai dengan standar, menjelaskan mengapa dan bukan bagaimana, dan menjawab pertanyaan yang benar , sangat ( sangat ) sangat membantu.
Komentar sebaris
Satu hal yang TIDAK BISA (dan jika saya bisa menulis yang lebih besar, saya akan) lakukan, adalah menulis komentar Anda di baris kode yang sama. Itu membuat komentar sangat spesifik untuk baris, yang benar-benar kehilangan tujuan mengomentari kode Anda.
Misalnya, komentar sebaris yang buruk:
Akan jauh lebih mudah untuk membaca dan memahami kode ini tanpa komentar, yang membuatnya berantakan dan tidak dapat dibaca.
Sebaliknya, komentar di dalam kode Anda harus ditempatkan di atas blok pada kode, dan mereka harus menjawab pertanyaan-pertanyaan penting yang mungkin timbul saat membaca blok kode.
Jauh lebih jelas, bukan? Sekarang Anda juga tahu bahwa Anda harus menggunakan
login()
fungsi dan memberikan parameter untuksend_mail()
semua yang Anda gunakan. Membantu sedikit, tetapi satu hal masih hilang.Dokumentasi fungsi
Telah banyak dibahas. Anda harus selalu memberi tahu pembaca tentang fungsi Anda, mengapa dan apa fungsinya. Bagaimana cara melakukannya, ini bukan milik dokumentasi, tetapi mungkin catatan kaki dari fungsi.
Anda harus dengan jelas menggambarkan apa yang Anda harapkan dari parameter Anda, dan jika Anda menginginkannya diperoleh / dibuat dengan metode tertentu. Anda harus menyatakan apa fungsi Anda harus dikembalikan, apa fungsinya, dll.
Sekali lagi, itulah pendapat dan metodologi saya saat menulis kode saya. Bukan hanya itu, tetapi itu hanya beberapa hal yang saya tidak setuju dengan jawaban lain tentang. Oh, dan tentu saja, bukan hanya komentar yang membaca kode Anda, tetapi kode Anda sendiri. Tulis kode yang bersih, dapat dimengerti dan dipelihara . Pikirkan tentang masa depan Anda sendiri saat coding ;-)
sumber
IMO dokumentasi terbaik adalah dokumentasi yang sebenarnya tidak Anda butuhkan. Saya juga benci menulis dokumentasi dan komentar.
Dengan itu dikatakan:
n
, melainkan sebagainumberOfItemsFound
contoh.sumber
numberOfItemsFound
cukup verbose; terlalu verbose juga merupakan masalah.Perlakukan kode Anda sebagai dokumentasi
Kode Anda adalah dokumentasi utama Anda. Ini persis menggambarkan apa yang dihasilkan aplikasi, perpustakaan atau apa pun, sebenarnya. Dengan demikian, setiap upaya untuk mempercepat pemahaman kode itu harus dimulai dengan kode itu sendiri.
Ada banyak tulisan tentang cara menulis kode yang dapat dibaca, tetapi beberapa poin utama adalah:
n
baik untuk satu lingkaran, nama deskriptif yang lebih panjang diperlukan untuk item dengan cakupan lebih besar),UpdtTbl
dengan komentar yang menjelaskan pembaruan tabel dengan aturan yang disediakan saatUpdateTableContentsWithSuppliedRules
dapat digunakan sebagai namanya,Menjadi lebih baik dalam membaca kode
Membaca kode, terlepas dari betapa sederhananya, adalah keterampilan yang dipelajari. Tidak seorang pun yang pandai membaca kode. Dibutuhkan latihan; banyak latihan. Jadi, misalnya, buka Github atau apa pun dan baca kode perpustakaan yang Anda gunakan, daripada hanya menggunakan perpustakaan itu. Temukan kode untuk dibaca dan dibaca.
Komentar adalah bau kode
Hanya dengan begitu kita sampai pada jenis dokumentasi lain. Pertama, seperti yang dinyatakan sebelumnya, hindari komentar. Jika saya menemukan kode yang berisi komentar, saya bersiap untuk yang terburuk: kode kemungkinan besar akan buruk, dan jujur komentar cenderung juga buruk. Seseorang yang tidak dapat berkomunikasi dengan baik melalui kode tidak mungkin dapat berkomunikasi dengan lebih baik melalui bahasa alami.
Waspadai dokumentasi API yang dibuat secara otomatis
Juga, berhati-hatilah dokumentasi API yang dibuat secara otomatis. Jika saya terpaksa membaca dokumen seperti itu, itu karena kode Anda sangat sulit dibaca. Sekali lagi, buat kodenya sederhana dan saya bisa membacanya langsung.
Tes juga dokumen
Tes juga merupakan dokumentasi. Jadi jangan anggap tes unit Anda sebagai tugas. Perlakukan mereka sebagai cara berkomunikasi dengan orang lain (enam bulan kemudian Anda termasuk di sini) tentang bagaimana kode bekerja dan dimaksudkan untuk digunakan.
Buat gambar jika itu membantu
Jika Anda menyukai UML, berarti Anda mendapatkan alat yang bagus dan menghasilkan diagram UML dari kode Anda. Tidak pernah mencoba menggunakannya untuk menghasilkan kode. Ini tidak baik sebagai alat desain dan Anda akan berakhir dengan kode yang mengerikan sebagai hasilnya.
Memiliki dokumen tampilan "1000ft"
Terakhir, tulis sendiri dokumen ikhtisar. Apa yang dilakukan aplikasi? Bagaimana cara melakukannya? Sistem lain apa yang terhubung? Hal-hal seperti itu. Jangan mencoba menggambarkan struktur kode di sini. Biarkan kode melakukan itu. Biarkan dokumen ini mengingatkan Anda mengapa Anda menulis kode di tempat pertama.
sumber
add 1 to i
, komentar harus menjelaskan mengapa kode melakukan apa yang dilakukannya. Sebagai contoh, kodeif (!something.Exists()) {...}
dapat menggunakan komentar seperti:// something exists only when (explanation of the broader scenario)
.// increment x
x++;
komentar yang adil yang tidak ada gunanya, tetapi salah membuang bayi dengan air mandi dan menyatakan bahwa komentar selalu buruk. Misalnya, komentar formulir// this case should never happen because xyz
throw exception "unreachable"
.//XXX: Not using straight-forward method Foo here because ...
. Komentar seperti itu bisa sangat berharga, tetapi tidak mungkin disampaikan dengan kode karena alasan yang jelas.Berikan surat pengantar
Kecuali jika Anda berada dalam domain yang sangat teknis, sebagian besar pertanyaan seputar kode tidak akan mengenai 'bagaimana' tetapi tentang 'mengapa' atau 'apa'.
Dengan demikian, cara untuk mengurangi orang dari harus melihat kode Anda, adalah dengan menulis deskripsi singkat tentangnya. Keuntungan dari ini adalah Anda dapat menyusun ikhtisar deskripsi dengan cukup mudah, dan ini jauh lebih mudah diakses. (Bahkan kepada orang-orang yang tidak akan / tidak diizinkan melihat kode).
Bahkan jika orang teknis, surat pengantar harus menawarkan panduan di mana mereka harus mencari sesuatu.
Poin sederhana yang sangat minimalis:
Contoh
sumber
Keuntungan kecepatan terbesar yang biasanya saya dapatkan dari membangun komit terpisah yang masing-masing mewakili langkah perantara yang mengkompilasi dan bekerja.
Jadi jika saya harus memperkenalkan parameter baru ke fungsi untuk mengimplementasikan fitur tertentu, maka ada satu komit yang tidak melakukan apa-apa selain menambahkan parameter dalam deklarasi, dalam definisi dan di semua situs panggilan. Kemudian, komit berikutnya memperkenalkan fungsionalitas, dan yang ketiga memperbarui situs panggilan yang memanfaatkan fitur baru.
Ini mudah ditinjau, karena perubahan mekanis murni dapat dilirik dengan cepat, dan kemudian menyingkir.
Demikian pula, jika Anda memformat ulang kode, itu harus selalu berupa komit terpisah.
sumber
Meskipun ada satu atau dua poin ketidaksepakatan di antara jawaban yang ada, jika hanya dalam penekanan, saya akan mencoba merangkum saran yang biasa dengan cara yang menjelaskan dari mana semua orang berasal:
Di sisi lain, jika ada sesuatu yang saya mungkin salah terlalu jauh, hampir tidak pernah menggunakan komentar. Peninjau kode Anda akan memberi tahu Anda jika Anda mendapatkan keseimbangan di tempat yang salah untuk mereka, tetapi jika Anda secara sadar mengikuti rencana 3 poin di atas, Anda mungkin akan tetap mendekati yang optimal.
sumber