http://robots.thoughtbot.com/post/8181879506/if-you-gaze-into-nil-nil-gazes-also-into-you
これを読んだ。 gaze ってなんだろとおもって辞書をひいたら「じっと見る、凝視する」とあって、なんか聞いたことあるフレーズだなと思って思い浮かんだのが「深淵をのぞく時、深淵もまたこちらをのぞいているのだ。」ニーチェですね。 nil を深淵とかけるのは洒落てるなーと思う。
内容は「nil をナマのまま使うな! nothing を意味するクラスでラップしろ」ってことだと読んだ。他にもいろいろ提示されてはいる(例外を発生させろとかね。本人もすぐ書いてるけど、出来ない相談だ) NoMethodError には誰しも悩まされることだろうし、メソッドの実装を深く知らないとどこに nil が入り込む余地があるのかわからないので辛いよね、というのも身にしみている。 maybe って名前もすっきりしてていいと思う。けどいますぐ自分のプロジェクトに取り入れようとは思わない。 DSL ともオープンクラスによるアドホックな組み込みクラス拡張とも違うような気がして、なぜかこういうのには抵抗を感じる。
こういうのはいろんな対処法があるのだろうし、そのどれもが折衷案というか、決定版には成り得ないのだろうという気がする(たくさんの実例を知っているわけではないので単なる印象に過ぎない)こういうのは静的型とコンパイラによる型チェックがだいたい解決してくれる問題なんじゃないかなという気がする(これも、そういう言語の経験がほとんどないので単なる印象に過ぎない)で、そう思って実際に行動に移したひとたちはいま Scala でコーディングしてるんじゃないかな、と。
なんにせよ、こういう話題は面白い。デザインに関わることのようで、他人の考えを知れるのは興味深いことだ。