lethevert is a programmer このページをアンテナに追加 RSSフィード

23/4/2006 (Sun) 晴れ

[]Perl : 「perl - 勝手に添削 - WEB+DB Press Vol.32 pp.94」より

http://68user.blog27.fc2.com/blog-entry-30.html

   return
      $xml->{'totalResultsAvailable'}, "hits",
      ol(map {
         encode_utf8 li(a({href=>$_->{'ClickUrl'}}, $_->{'Title'}))
      } @{ $xml->{'Result'} } ); 

あれ、これってこんなに分かりにくいコードだったっけ?と考えることしばし。

元のページを開いて納得。

http://blog.livedoor.jp/dankogai/archives/50465942.html

    return 
        $xml->{'totalResultsAvailable'},  "hits",
        ol(map {
            encode_utf8 li(a({href=>$_->{'ClickUrl'}}, $_->{'Title'}))
            } @{ $xml->{'Result'} } );

インデントが全然違うじゃない!インデントが違ったら読みにくくなるのもあたりまえだよ。

この場合、最後の2行は、"ol(map"に掛かる部分なので、それよりもインデントを浅くすると、ブロック構造が分かりにくくなってしまう。最初のコードは、"encode"で始まる行が"map"と同じインデントになっているので、"map"と同列に"ol"の引数であるかのように見えるし、"} @{ $xml"で始まる行は、"ol"と同列に"return"の引数であるかのように見えてしまう。これでは混乱する。

ちょっと手を加えて、ol, li, a, hrefを目立たせてみた。個人的には、これの方が好みかなぁ。

    return 
        $xml->{'totalResultsAvailable'},  "hits",
        ol( map { encode_utf8 li( a( { href => $_->{'ClickUrl'}},
                                     $_->{'Title'}))}
                @{ $xml->{'Result'}});

----

それにしても括弧が多いな。Cleanで嘘プログラミングするとこうなるのか?

    = get "totalResultsAvailable" xml +++ "hits" +++
      (get "Result" xml --> map $ encode_utf8 o li
                                              o a
                                              o (\x = [Href $ get "ClickUrl" x
                                                      ,Text $ get "Title" x])
                        --> ol)

・・・嘘っぽい。あ、型エラーだ。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/lethevert/20060423/p2