バッドプラクティス in Perlベストプラクティス

14
バババババババババ in Perl バババババババババ ババババババババ 2014/05/16 ババ ババ @addsict ババババババババ 2014/05/16

Transcript of バッドプラクティス in Perlベストプラクティス

Page 1: バッドプラクティス in Perlベストプラクティス

バッドプラクティス in Perl ベストプラクティスエンジニア勉強会 2014/05/16古山 祐樹@addsict

エンジニア勉強会 2014/05/16

Page 2: バッドプラクティス in Perlベストプラクティス

今日の話

http://www.oreilly.co.jp/books/4873113008/

エンジニア勉強会 2014/05/16

Page 3: バッドプラクティス in Perlベストプラクティス

おことわり

今日話す内容はこの本を読んでいて、個人的に気になった部分です。

異論・反論は大いに結構ですので声をあげてください。

エンジニア勉強会 2014/05/16

Page 4: バッドプラクティス in Perlベストプラクティス

ベストプラクティス系の本の読み方

• 世の中のコードと比較して読む– 実際にこのやり方は世の中の Perl Monger は使っている

の?– CPAN モジュールを読むいいチャンス

• 疑って読む– Perl の言語仕様も変化しているかも?

• Perl ベストプラクティスの初版は 2006 年 (Perl v5.8 時代 )

– 本当にベストな方法?遅いのでは?読みにくいのでは?

エンジニア勉強会 2014/05/16

Page 5: バッドプラクティス in Perlベストプラクティス

5.12 変数「スライスのキーやインデックスの数が多い場合はファクタリングする」

エンジニア勉強会 2014/05/16

Page 6: バッドプラクティス in Perlベストプラクティス

疑って読んでみよう

• 5.12 のベストプラクティス内で何を推奨しているか– ハッシュの keys 関数と values 関数が

常に同じ順序でハッシュエントリを操作することを利用する

• ホントに同じ順序?エンジニア勉強会 2014/05/16

Page 7: バッドプラクティス in Perlベストプラクティス

YES perl 5.16≦

NO perl 5.18≧

エンジニア勉強会 2014/05/16

Page 8: バッドプラクティス in Perlベストプラクティス

$ perldoc perl5180delta

エンジニア勉強会 2014/05/16

Page 9: バッドプラクティス in Perlベストプラクティス

12.2 正規表現「常に /m フラグを使用する」

エンジニア勉強会 2014/05/16

Page 10: バッドプラクティス in Perlベストプラクティス

本当に読みやすい?

• 前提– 正規表現のメタ文字 ^ と $ の取り扱い

• 12.2 で述べていること– ^ と $ はそれぞれ「文字列全体の先頭」、「文字列全体の末

尾」を表すなんてコードを保守する人・読む人は知らないだろう

– それならば常に /m フラグを付けて、 ^ と $ に「自然」な動きをさせよう

エンジニア勉強会 2014/05/16

Page 11: バッドプラクティス in Perlベストプラクティス

読み手に誤った情報を与えない

• /m フラグを付けた場合、読み手に

「入力される文字列が必ずマルチライン文字列である」

と勘違いさせる可能性がある• 不必要な情報 ( 正しくない情報 ) を与える可能性があるもの

を常に使用すべきだとは思わない

Perl ベストプラクティス本には、「常に xx を使用する」という

過激なプラクティスが多いので慎重に検討しましょう…エンジニア勉強会 2014/05/16

Page 12: バッドプラクティス in Perlベストプラクティス

5.5 「あまりよく知られていない句読点変数には、 use English を使用する」9.9「マルチコンテキストでの戻り値には Contextual::Return を使用する」

エンジニア勉強会 2014/05/16

Page 13: バッドプラクティス in Perlベストプラクティス

読み手を驚かせない

• use English; 知っていますか?– cf.) Perl の一文字変数の攻略

http://hachiojipm.github.io/entry/2013-09-16-perlonechar.html

• シンプルにやろう– 一見便利そう・可読性が上がりそうに見えるモジュールが

他の人からどう見えるか考えよう– シンプルなモジュールでシンプルに組み立てよう

エンジニア勉強会 2014/05/16

Page 14: バッドプラクティス in Perlベストプラクティス

まとめ• Perl ベストプラクティスはいい本• だけど古い情報もいくらかある– 手を動かしつつ疑ってみよう

• 「常に xxx を使用する」系のベストプラクティスは慎重に検討し、自分なりに咀嚼する

エンジニア勉強会 2014/05/16