Perlベストプラクティス
- 作者: Damian Conway,クイープ
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2006/08/24
- メディア: 大型本
- 購入: 11人 クリック: 153回
- この商品を含むブログ (155件) を見る
ただ、2点ほど細かいところが気になったのでメモ*1。
1.unlessわかりにくいから使うなというのはどうか
2.正規表現でoフラグが勧められていないのは何故?
1.「unless使うな」について
自分はunless使うときは以下の点に注意しています。
- Test::Unitのassert*2のように「期待される条件」を中に入れるように
- メソッドやループの頭で、return,next,lastするための条件文限定(フィルタ)
next LOOP unless(期待される条件);
制御を続けるために期待されている条件が何なのか、フィルタなのか通常の分岐なのか、こう書くと見やすいと思っています。
複雑な条件をis_fooなどのようにメソッドにくくり出したときも、
return unless( $foo->is_foo );
と書くのが英語の文章としても自然でしょう。
2.oフラグ
でかいループの中でつかう正規表現で、oフラグを立てるか立てないかで効率が凄く変わります。
$a =~ m{$pattern}o;
$patternが変化しないのであれば迷わずoフラグ立てるべきだと思うんですが、「xmsはいつもつけとけ」と指摘しているのに、これだけスルーしているのは何故なんでしょう。
確かに$patternが変化する場合には、わかりにくいバグの原因にはなるのですが。
本題からはものすごくずれますが、ベストプラクティスで必須といわれているxmsにo、iを加えると、並べ方によってxomis(くそみそ)と読めたり、imsox(I'm Sox:(ホワイト|レッド)ソックスメンバー?)と読めたりします。自分は後者つかってますが、他に覚えやすい並びってあったら教えてエロい人。