原です。

From: Sinichiro Dezawa <dezawa / miya.fujifilm.co.jp>
> > 最近、「メソッドが nil に対して用意されていない事で例外が起こる」
> > という事が、ずいぶん便利に思えてきました。この例外が起こらない様
> > にプログラムを書くことで、論理がすっきりするみたいです。例えば
> 
> わからん 。
> 詳しく説明してもらえます?

いえ、別に難しいことを言っているんでは無くて、変な所に nil が
出てきたたら、その前のコードでバグを入れている可能性が高いと
いうことです。

例えば fname = "/foo/bar" というファイルのベースのファイル名
を bar の文字数をカウントしたい時、

fname =~ /[^\/]+$/
print $&.length, "\n"

と書けますが、これに fname = "/foo/bar/" を食わせると、例外で
止まります。つまりこれは、趣旨に合わない入力がなされている事
を教えてくれてるわけです。(Perl だったら素通しで 0 を返すで
しょう。) fname = "/foo/bar/" のベースのファイル名の長さを
知っても意味が無いので、止まってくれていいわけです。この例外
が起こらないようにするには、ちゃんと入力になる fname が適切な
形をしているかどうかチェックを入れるか、例外捕捉をする事によっ
て、そのコードで何をしたいかが鮮明になると思います。

前の例は

>     self =~ /(.)$/
>     if $1 != nil && $1.size == 2
>       original_chop!
>     end

でしたが、「perl 書き」はしばしば、

    self =~ /(.)$/
    if $1.size == 2
      original_chop!
    end

と書くでしょう。しかし$1 が存在しないのに size を知りたがる
のは実はおかしい事であり、本当は存在するときだけ知りたいの
であるから、やはり

    if self =~ /(.)$/
      if $1.size == 2
        original_chop!
      end
    end

と書くほうが、やりたいことが素直に出ている様に思います。まあ、
そのいいかげんさが Perl のいいところであるわけで、何事もバラ
ンスの問題だけど。

foo が nil の時、 foo < "bar" は、やはり ruby に叱られるけれど、
出沢さんの様に意識的に nil を使っているのなら違いますが、多くの
場合、その前のアルゴリズムが間違っているんじゃないでしょうか。

それに nil をマイナス無限大にするのもかなり恣意的なもので、プラ
ス無限大にしてほしい人も結構いるんじゃないかしら。
---===-=-=-=-=-=-=-=-=======--=-=-=-==-=-===-=-=-=-=-=-=--=-==-=--
                            Shin-ichro Hara(Nagaoka Univ.of Tech.)