タグ

ブックマーク / charsbar.hatenadiary.org (3)

  • メソッドチェーンの話の続きの続き(エラー処理編) - Charsbar::Note

    メソッドチェーンを使うとデバッグしづらくなるんでないか、という疑問に対するMojo的な反論。 my $instances = Mojo::Loader->new->load('Book')->build;という文があるとき、loadに失敗したらどうなるかを考えてみる。 よくあるメソッドのようにload('Book')がクラスないしオブジェクトを返す場合は、ロードにこけたら次のbuildを実行するオブジェクトがないといって怒られるのがふつうだ(or die $@などで判定しやすくなるよう、undef、あるいはその他の偽になる文字列などが返ってくることが多いため)。だから、evalでくるんだり、チェーンを切って逐一エラーチェックする必要がある。 Mojoのように基的には自分を返し続けるチェーンなら、そうはならない。実際にMojo::Loaderのloadとbuildのソースを見てみよう。 s

    メソッドチェーンの話の続きの続き(エラー処理編) - Charsbar::Note
    iww
    iww 2011/06/05
    メソッドチェーンの話。どこでエラーがおきたかわからないとデバッグしづらいと思うんだが、その回答にはなっていないっぽい。
  • DBD::SQLite 1.30_02 - Charsbar::Note

    あと、先日リリースしたDBD::SQLite 1.30_02の変更点について。 DBD::SQLiteはこれまで DBIが用意した枠組みの範囲内でのトランザクションを利用している(AutoCommit/begin_work) fork()などを利用して並列性を高めている 読み書きを平行して行っている といった条件が重なったときにトランザクションがデッドロックすることがある、という問題を抱えていました。最小限の再現コードはこんな感じになります。 use strict; use warnings; use DBI; my $pid = fork(); if ($pid) { do_transaction(); } else { sleep 1; do_transaction(); exit; } unlink 'test.db'; sub do_transaction { my $dbh =

    DBD::SQLite 1.30_02 - Charsbar::Note
  • メソッドチェーンの話 - Charsbar::Note

    たしかに使い方によっては非常に読みづらくなるのは事実だから、「あまり多用しないでほしい」という気持ちもわからないではない。 でも、このサンプルでそれを言うのはあんまりじゃなかろうか。 以下のようなメソッドチェーンは読むのが困難だ。 my $loader = Loader->new; my $book = $loader->load( 'Book' )->build loadメソッドが自分自身( $loader )を返却して、そこからbuildが呼ばれたのか、他のオブジェクトが返却され、そこからbuildがよばれたのかがわからない。 だから、あんまりメソッドチェーンを多用しないでほしい。Mojoのソースコードを読んでいてそう思った。 http://d.hatena.ne.jp/perlcodesample/20090217/1233844169 ふたつめの文をそのまま英語として、名詞と動詞に

    メソッドチェーンの話 - Charsbar::Note
  • 1