ruby-reference-manual:472
From: Minero Aoki <aamine@l...>
Date: Mon, 27 Aug 2007 05:50:01 +0900
Subject: [ruby-reference-manual:472] Re: メソッドの説明中の例の位置
青木です。 On 2007/08/12, at 23:59, sheepman wrote: > こんばんは、sheepman です。 > > メソッドの説明中の例の位置に関してです。 > > http://doc.loveruby.net/wiki/HowToWriteMethodEntry.html > > で、例は最後にまとめるということになっていることに最近気がつき > ました(笑)。 > これだと、例とそれを説明している文章が離れてしまいます。例の位 > 置はもう少し > 柔軟に対処しちゃいけないでしょうか。 > Ruby のリファレンスの場合は、例が割と多くて、個々の例の行数は > 短いので > 説明の本文の間に入れてもおかしくないと思うのですが。どうでしょ > うか。 まず、ここで言及されている「例」はよく見ると二つのパターンがあると 思います。一つめは文章を補足する形で入れられている「コード例」、 二つめは単独で意味をなす「コード例」です。 eklerni さんが挙げている Class.new の例は前者にあたると思 います。 それに対してわたしが「あとにまとめて書く」と書いたときに意図して いたのは後者です。例えば String#* のような使いかたが該当し ます。 String#* のマニュアル http://doc.loveruby.net/refm/api/view/method/String/i/=2a でもって、前者のような、文章の途中で補足としてコードを使う方法 は非常に難しいです。なぜかというと、そのコード例がどういう位置 付けにあるのか明確にするのが難しいからです。 例えば Class.new の場合は直前にある「最初に名前を求める際 に代入 されている……」というくだりを実例で示している、の ** だ ろうなあ** とはわかるんですが、明確に書いてあるわけではありません。直前の 段落に「以下にその例を示します」とかなんとか書いてあればちょっと 違ってくるでしょうが、いまの文章では舌足らずです。 それから、Class.new の二つめのコード例ではコード例を主語と して 使っていますが、これも非常によろしくありません。日本語の文の途中 にコードを入れるべきではありません。文の途中にコードを入れると 主語や目的語が巨大になって読みにくいからです。この場合なら次の ようにすべきです。 Class.new(super) {|m| ... } は以下のコードと同じです。 ……コード…… なお、ブロックの実行は Module#initialize が行います。 一般に、コードを入れながら説明すると、よろしくない書きかたに つながりがちです。ですからわたしとしてはコードを途中に入れる 書きかたを推奨しません (ただし禁止はしません)。どう しても例が ないとわかりにくい場合は、コード例がなんのために入っているのか 十分に説明を加えてください。 それから、最後にまとめて書くコード例は、主に使用例を書くために 使います。それに対して文章の途中で書くコード例は文章を補うため に使います。目的が違う以上、どちらか一つに絞ることはできません。 さらに言えば、使用例は必須です。それに対して、説明のために使う コードは必須ではありません。また、説明の途中で例を書いたから 使用例はいらないということにもなりません。 わたしの結論をまとめて書きます。 1. 最後にまとめて書く例はそのメソッドの使用例である。 getter メソッドみたいに使いかたが明らかすぎるものを除いて、 使用例は常に付けるべき。1 行でもいいので付けるべき。 2. メソッドの説明の補助として使うコード例は必ずしも必要でない。 また、使うときはそのコード例がなんのためにそこに書いてある のか ちゃんと説明すべき。 -- 青木峰郎 -- ML: ruby-reference-manual@m... 使い方: http://QuickML.com/
455 2007-08-12 16:59 [sheepman@s... ] メソッドの説明中の例の位置 456 2007-08-12 18:25 ┣[eklerni@f... ] 457 2007-08-13 06:16 ┣[okkez000@g... ] 458 2007-08-13 14:43 ┃┗[eklerni@f... ] -> 472 2007-08-26 22:50 ┗[aamine@l... ] 474 2007-08-27 02:01 ┗[sheepman@s... ] 479 2007-09-02 20:30 ┗[aamine@l... ]