Diary?

2008-02-28
Thu

(19:58)

未だに時々サンボマスタージェネレータが PIL のサンプルとして紹介されるのだけど、作者としてはもっとマシなサンプルはないのかと言いたい。もの凄く言いたい。というかあの程度の処理は PIL のドキュメント読みながらやれば書けるだろ、普通。

(20:28)

Java を例にとると、以下のような文字列比較は好ましくない、もしくはバグだとされる。

void foo(String s) {
  if (s.equals("abc")) {
    :
    :
  }
}

これは s の値が null だった時に例外で落ちるからで、こういった場合 "abc".equals(s) と書くのがよいとされる。が、そんなもの俺に言わせればクソ喰らえだ。

理由の一つは明らかに自然言語の文としてみて不自然な印象を受けるというのがあるが、一番大きな理由は引数が null か否か、正しくは引数として null を認めるか否かという問題から逃げているということだ。これは明らかに悪い意味での Defensive Programming に思える。 null と文字列はまったく別のものなんだから、それに対して目を瞑るのは常に認められるわけでは無いだろう。もしかしたら、渡されてきた null は呼び出し元のバグのせいかもしれないだろう (何せ null だからな)。もっともそうして null を別扱いにすると「条件にマッチしなかった時と null とでエラー処理コードが重複する」という問題が起こらなくもない。なので結局はケースバイケースなのだろうが、それでも俺は上記のコードからは嫌な匂いを感じる。

もっとも俺が一番気にくわないのは文字列の比較が常に == で行えないことで、こういう時に「何で文字列がインターンされてないんだ」「何で演算子がオーバーロードできないんだ」という不満が出てくる。

Creative Commons
この怪文書はクリエイティブ・コモンズ・ライセンスの元でライセンスされています。引用した文章など Kuwata Chikara に著作権のないものについては、それらの著作権保持者に帰属します。