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