Rubyコードを文書化する方法は?


201

Rubyコードを文書化するときに特定のコード規約はありますか?たとえば、次のコードスニペットがあります。

require 'open3'

module ProcessUtils

  # Runs a subprocess and applies handlers for stdout and stderr
  # Params:
  # - command: command line string to be executed by the system
  # - outhandler: proc object that takes a pipe object as first and only param (may be nil)
  # - errhandler: proc object that takes a pipe object as first and only param (may be nil)
  def execute_and_handle(command, outhandler, errhandler)
    Open3.popen3(command) do |_, stdout, stderr|
      if (outhandler)
        outhandler.call(stdout)
      end
      if (errhandler)
        errhandler.call(stderr)
      end
    end
  end
end

これは大丈夫だと思いますが、おそらくより優れた/優れた文書化の方法がありますか?


shop.oreilly.com/product/9780596516178.doのソースコードには、ちょっとした良い例があります。第2章のリストをご覧ください。それはここの答えのようなものです。私はソースコードを表示するためだけにrdocで遊んだことがあります。ファイル拡張子をmy_code.rbからmy_code.rb.txtのようにして、それに対してrdocを実行できます。> rdoc my_code.rb.txtの場合、rdocはとにかくHTMLをレンダリングするため、クラスやモジュールについては問題になりません。楽しんでください。
ダグラスG.アレン

回答:


198

RDocプロセッサのドキュメントをターゲットにする必要があります。RDocプロセッサは、ドキュメントを見つけてそこからHTMLを生成できます。コメントを適切な場所に配置しましたが、RDocがフォーマット方法を知っているタグの種類については、RDocのドキュメントを参照してください。そのために、コメントを次のように再フォーマットします。

  # Runs a subprocess and applies handlers for stdout and stderr
  # Params:
  # +command+:: command line string to be executed by the system
  # +outhandler+:: +Proc+ object that takes a pipe object as first and only param (may be nil)
  # +errhandler+:: +Proc+ object that takes a pipe object as first and only param (may be nil)

outhandlerおよびerrhandlerパラメーターがnilの可能性があることをどのように文書化する必要がありますか?
StackedCrooked 2009年

10
YARDのアノテーションはより強力かもしれませんが、RDocの代わりに標準のRubyディストリビューションに含まれるまで、そのアノテーションは標準ではありません。
ケンブルーム

RDocリンクが壊れています:github.com/ruby/rdocを試してください。誰もがそのリンクに満足している場合は、回答を編集するようにリクエストします。
ジョーダンスチュワート

27

RDocの使用を強くお勧めします。それはほとんど標準です。コードのコメントを読みやすく、プロジェクトのWebベースのドキュメントを簡単に作成できます。


24

述べられているように私はRDocを知ることをお勧めします。しかし、非常に人気のあるYARD A Ruby Documentツールも無視しないでください。Rubyのオンラインで表示されるドキュメントの多くはYardを使用しています。RVMはYardを知っており、使用可能な場合はそれを使用して、マシン上にドキュメントを生成します。

Yardが使用しているため、RDocは引き続き必要です。


1
主にC ++、Java、Scala、PHPを使用してきたため、この@tag表記法は非常に馴染み深いものです。
doub1ejack 2016

1
YARDは4年ぶりに大きく進化しました。YARDがまだRubyに含まれていないのは残念です。(ちなみにYARDホームページはHTTPSを受け入れます。)
フランクリンYu

1
YARDはRDocより軽いようです!ありがとう:)
コンスタンティンデラロッシュ


9

TomDoc for Ruby-バージョン1.0.0-rc1を確認することもできます。

http://tomdoc.org/


FWIW、これはGitHubスタイルガイドで指定されています-github.com/styleguide/ruby
Michael Easter

おかげで、Tomdocは、Rubyコードの文書化に関して現在のベストプラクティスの良い情報源のようです。rdocのドキュメントに明らかに欠けている「方法」と「理由」に答えます。
Michael Renner

TomDocは最新の状態に保たれていません。最後のコミットは2012
でした。– maasha

1
@maasha 2017年までに、プレーンなRDoc以外の最善の策はYARDになると思います。これにより、コンテンツが解析され、クラスやメソッドへのいくつかの派手なハイパーリンクが作成されます。
フランクリンユー

2

正規の RDocは、投稿したものとよく似ています。

送信したリンクのサンプルセクションをご覧ください


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.