コード内ドキュメント
最も重要なことは、選択した開発環境でドキュメント機能を使用することです。つまり、Pythonのpydoc、javaのjavadocまたはC#のxmlコメントを意味します。これらにより、コードの記述と同時にドキュメントの記述が簡単になります。
戻ってきて後で物事を文書化することに依存している場合、それを回避することはできませんが、コードを書いているときにそれを行うと、文書化する必要があるものが頭に浮かぶでしょう。C#には、XMLドキュメントが不完全または実際のコードと一致しない場合にコンパイル警告を発行するオプションもあります。
ドキュメントとしてのテスト
もう1つの重要な側面は、適切な統合と単体テストを行うことです。
多くの場合、ドキュメントはクラスとメソッドが単独で行うことに集中し、それらを一緒に使用して問題を解決する方法をスキップします。テストでは、これらが相互にどのように相互作用するかを示すことで、これらをコンテキストに入れます。
同様に、単体テストでは、モックアウトが必要な外部依存関係を明示的に指摘することがよくあります。
また、テスト駆動開発を使用すると、使いやすいソフトウェアを作成することがわかります。優れたテストフレームワークでは、コードをテストしやすくすることと使いやすくすることは、多くの場合同じことです。
高レベルのドキュメント
最後に、システムレベルとアーキテクチャのドキュメントについて何をすべきかがあります。多くの人は、このようなドキュメントをwikiで書くか、Wordまたは他のワードプロセッサを使用することを推奨しますが、私にとっては、このようなドキュメントの最適な場所は、コードと共に、バージョン管理システムに優しいプレーンテキスト形式です。
コード内のドキュメントと同様に、コードリポジトリに高レベルのドキュメントを保存すると、常に最新の状態に保つことができます。また、コードのバージョンXYを取り出すと、ドキュメントのバージョンXYも取得できるという利点があります。さらに、VCSフレンドリ形式を使用する場合、コードと同様に、ドキュメントを簡単に分岐、差分、およびマージできます。
私はかなりのようなreStructuredTextの(RST) 、使用してそれからHTMLページとPDF文書の両方を生成することが容易であるスフィンクスを、そしてよりはるかに友好的である乳液、それでも含むことができ、LaTeXの数式表現をあなたがそれらを必要とするとき。