OK、これが正しいことかどうかはまったくわかりませんが、私がやろうと決めたのは次のとおりです。
まず、別の Rails 開発者なら、標準のモデル、ビュー、コントローラーのディレクトリに私が書いたすべてのコードの意図を、少なくともよく知っているだろうと思っていました。そこで、他のソース ファイルに RDoc を追加し始めました。lib/helpers と app/helpers に公正なコード コレクションを作成したことが判明したので、そこから始めました。私は各ヘルパー メソッドについてかなり一般的な関数レベルのドキュメントを作成し、意図に焦点を当て、メソッドと引数の命名が覚えやすいものを詳しく説明しました。コーナー ケース、引数の相互作用、またはエラー チェックのほとんどについては説明しませんでした。これらの詳細については、各メソッドの単体テストを参照してください。
これを行っている間に、ばかげたことを文書化するのではなく、メソッド シグネチャにかなりの変更を加えたことがわかりました。(クリーンコードを読みましたか?@unclebobmartin で?すべての面で優れていると思いますが、特にネーミングと自己文書化で優れています。) したがって、RDoc の追加作業に加えて、(必要な) リファクタリングにかなりの時間を費やすことになりました。まだ十分な距離が取れていなかったので、最初にコードを書いた後のリファクタリング パスで、これが思い浮かびました。おそらく、「RDoc の追加」に費やした時間の 80% は、「ヘルパー」ディレクトリ内のコードに費やされ、その大部分は、作成ではなくリファクタリングでした。したがって、誰も RDoc 自体を読んだことがなくても、これは貴重な演習だったと思います。
次に、コントローラーに目を向けました。scaffolding が各コントローラー メソッドで生成するものと一致するデフォルトの単一行コメントを RDoc の最初の行として残しました (例: "# GET /")。標準的な Rails のことだけを行うメソッドについては、他のドキュメントは追加しませんでした。文書化する価値のあるコントローラー メソッドで行った独自のことは、それらが返すもの (HTML 以外のデータ形式など)、目的 (標準 REST モデルを超えたアクションなど) に関係していることがわかりました。 Ajax リクエストを処理するためのもの)、およびそれらが非標準の URL 形式を使用しているかどうか。(これは実際には私のルート設定のドキュメントでしたが、config/routes.rb は RDoc の生成に使用されていないため....) アクションの動作についてはまったく説明していませんでした。私の自動テストは、誰かが知る必要のあるすべてのケース/動作を十分にカバーしていると感じています. 最後に、コントローラーが操作するモデル クラスに言及するクラス レベルのコメントを追加しました。これは、人々が推測できないためではなく、生成された HTML ページに便利なリンクが含まれるようにするためです。
最後に、モデルの作業を行いました。繰り返しになりますが、ここでは単体テストで十分であることを考慮して、動作 (ビジネス ロジック) を文書化しませんでした。私がしたことは、フィールド定義が db/schema.rb にあることを読者に思い出させることでした (ばかげているように感じましたが、Rails に慣れていない開発者が物事を理解しようとしている場合、すべての魔法のメソッドのベース名を思い出しても害はありません。 )。また、モデルの振る舞いの多くは、Rails の宣言型ヘルパー メソッドがモデル クラス (validates_...、belongs_to など) によって直接呼び出されることによって実装されていることにも気付きました。この機能が何を達成するかを説明しようとするのではなく (結局のところ、望ましいモデルの動作はテストによって「説明」されます)、モデルのソースを確認することを忘れないでください。(残念なことにRDocはそうではありません'
そして、それはそれでした。おそらく私が書く必要があるよりも少し RDoc が多いですが、コードが進化しても維持されるほど十分に軽量であり、単体テストによって「表現された」ものとはまったく重複しないと思います。うまくいけば、Rails 開発者が規則から推測できることと、ソースからしか理解できないこととの間のギャップが埋められます。(ただし、ビューからより多くの部分をヘルパーにプルしたいという衝動が高まっていることに気付きましたが、それらは再利用されておらず、ERB のインライン HTML を失うことを意味します。それらの説明を記述できるようにするためです。図を参照してください。)