Внутрішньо-кодова документація
Найголовніше - використовувати засоби документації у обраному вами середовищі розробки, так що це означає pydoc для python, javadoc в java або xml коментарі в C #. Це дозволяє легко писати документацію одночасно з написанням коду.
Якщо ви покладаєтесь на повернення та документування речей пізніше, ви можете не обійтись, але якщо ви це зробите так, як пишете код, то те, що потрібно задокументувати, буде свіжим у вашому розумі. C # навіть має можливість видати попередження про компіляцію, якщо документація XML неповна або не відповідає дійсному коду.
Тести як документація
Ще одним важливим аспектом є хороша інтеграція та одиничні тести.
Часто документація зосереджується на тому, які класи та методи роблять поодиноко, пропускаючи те, як вони разом використовуються для вирішення вашої проблеми. Тести часто ставлять їх у контекст, показуючи, як вони взаємодіють між собою.
Так само одиничні тести часто вказують на зовнішні залежності, явно через які потрібно виправляти макети.
Я також вважаю, що за допомогою тестової розробки я пишу програмне забезпечення, яке простіше у використанні, оскільки я використовую його прямо від слова go. Завдяки хорошій схемі тестування, полегшення тестування коду та полегшення його використання часто одне і те ж.
Документація вищого рівня
Нарешті, є що робити щодо системного рівня та архітектурної документації. Багато хто закликає писати таку документацію у вікі або використовувати Word чи інший текстовий процесор, але для мене найкращим місцем для такої документації є поряд з кодом у простому текстовому форматі, який є зручним для системи управління версіями.
Як і в документації з кодом, якщо ви зберігаєте свою документацію вищого рівня у своєму сховищі коду, ви, швидше за все, будете її оновлювати. Ви також отримуєте перевагу, що витягуючи версію XY коду, ви також отримуєте версію XY документації. Крім того, якщо ви використовуєте дружній формат VCS, це означає, що легко розгалужувати, відрізняти та об’єднувати вашу документацію, як і ваш код.
Мені дуже подобається reStructuredText (rst) , оскільки легко створювати як HTML-сторінки, так і PDF- файли з нього за допомогою сфінкса , і він набагато дружніший, ніж LaTeX , але все ще може включати математичні вирази LaTeX, коли вони вам потрібні.