2009-10-30 17:33:03 +0900 (136d); rev 28
メソッドシグネチャ (メソッド名と引数の記述) は以下のように書きます。
--- メソッド名 -> 返り値の型
--- メソッド名(引数) -> 返り値の型
--- メソッド名(引数) { .... } -> 返り値の型
<メソッドのドキュメント>
引数の形式がいくつもある場合や、alias があるときは、上記の ように「--- メソッド名」の行を連続して書いてください。
メソッドシグネチャは Ruby での def と同じように記述します。 旧リファレンスマニュアルでは「self + other」や 「self[key] = value」のような書きかたも許容されていましたが、 新マニュアルでは認められません。 それぞれ、
--- +(other) --- []=(key, value)
と書いて下さい。
メソッドのドキュメント内でヘッドラインを使いたいときは レベル 3 (===) 以上を使ってください。
メソッドのドキュメントは以下の項目を、この順番で記述します。
[例]
--- index(pattern, pos = 0) -> Integer | nil
文字列のうちインデックス pos 以降の部分から
パターン pattern を検索し、そのインデックスを返します。
pattern が見付からなかったときは nil を返します。
必要ならここに詳しい説明。必要ならここに詳しい説明。必要ならここに詳しい説明。
必要ならここに詳しい説明。必要ならここに詳しい説明。必要ならここに詳しい説明。
必要ならここに詳しい説明。必要ならここに詳しい説明。必要ならここに詳しい説明。
必要ならここに詳しい説明。必要ならここに詳しい説明。必要ならここに詳しい説明。
必要ならここに詳しい説明。必要ならここに詳しい説明。必要ならここに詳しい説明。
@param pattern 検索するパターンです。
正規表現、文字列、文字コードを示す 0 から 255 の整数のいずれかを指定します。
@param pos 検索を始めるインデックスです。整数で指定します。
負の数を指定したときは文字列の末尾から数えたインデックスとみなします。
@return 見付かった場合は要素のインデックスを、見付からなかったときは nil を返します。
@raise ArgumentError
上記以外の引数を渡し、かつそのオブジェクトが
to_s メソッドを持たないときに発生します。
↑ メソッドの選択が悪かったのでかなり無理無理な条件になってしまった
p "strstrstr".index(/str/) # => 0 ← 引数 pattern の例
p "strstrstr".index("str") # => 0
p "strstrstr".index(?s) # => 0
p "strstrstr".index(/xxx/) # => nil ← 検索が失敗したときの例
p "strstrstr".index("xxx") # => nil
p "strstrstr".index(?x) # => nil
p "strstrstr".index(/str/, 0) # => 0 ← pos 引数の例
p "strstrstr".index(/str/, 1) # => 3
p "strstrstr".index(/str/, 3) # => 3
p "strstrstr".index(/str/, 4) # => 6
p "strstrstr".index(/str/, -1) # => nil ← 負の pos 引数の例
p "strstrstr".index(/str/, -2) # => nil
p "strstrstr".index(/str/, -3) # => 6
@see [[m:String#rindex]]
引数がある場合、@param は必須とします。本文の繰り返しになっても良い。
@param には引数の
を書く。 例えば String#index(pattern, pos = 0) の pos なら「意味」とは「検索を開始する位置」であり、制約条件は「整数」 です。制約条件は「型」とほぼ同じです。
メソッドシグネチャには以下のように返り値の型を必ず(MUST)記述します。
複数の型の値を返すときは原則としてシグネチャを分けます。
例: CGI#[](name) -> String | [String]
例:String#index(略) -> Integer | nil
--- Enumerable#all? {...} -> bool
--- Enumerable#map {...} -> [object]
--- Enumerable#each_with_index {...} -> self
--- Array#pop -> object
--- Array#size -> Integer
--- Array#[]=(nth, val) <= 省略
--- Thread.critical=(state) <= 省略
--- String#+(...) -> String
--- String#capitalize! -> self | nil
--- Test::Unit::Assertions#assert(val) -> ()
--- Digest::MD5.new() -> Digest::MD5
メソッドエントリを実際に書くうえで、間違いやすい点を列挙しておきます。 ClassReferenceManualFormat に関するものも含みます。
@param pattern 検索するパターンです。
正規表現、文字列、文字コードを示す 0 から 255 の整数のいずれかを指定します。
これはOKですが、
@param pattern 検索するパターンです。 正規表現、文字列、文字コードを示す 0 から 255 の整数のいずれかを指定します。
これだと二行目を続きだとみなしてくれません。
[[m:Kernel.puts]] [[m:Kernel#puts]]
は間違いです。正しくは以下です。
[[m:Kernel.#puts]]
@seeなど@系の宣言やハイパーリンクはかけるところが制限されています。よって
==== [[c:Proc]] の内容
などという書き方はできません。 また、メソッドのドキュメント以外の場所(クラスのドキュメントなど)で@系のものを書くことはできません。
返り値が不定の場合は「-> ()」と書きますが、単に任意の型が返ってくる場合にも「-> ()」 を使ってしまっているケースが見受けられます。その場合は「-> object」です。
真偽値を返す場合は「bool」です。「boolean」ではありません。
例えば成功するとString, 失敗するとnilを返すメソッドの返り値は -> String|nil nilを後ろに書く。
nodoc が付いているなどの理由でリファレンスを書かないメソッドは #@# でコメントアウトしておく。 別の人が見たときに困らないため。
Related Pages: OldTop HowToJoin Phase3WorkingScheme ReferenceManualFormatDigest ClassReferenceManualFormat
system revision 1.162