Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Perlのよい書き方

 Perlのよい書き方

#perlwalateの発表で使用したスライドです。
perlstyleとPerl Best Practceの話

dorapon2000

July 01, 2020
Tweet

More Decks by dorapon2000

Other Decks in Programming

Transcript

  1. % whoami 久保田享祐 / dorapon2000 - 筑波大学大学院 → モバイルファクトリー - 新卒3ヶ月目 -

    Perlは入社が決まってから触り始めた - Python - 最近の趣味 - Apex - 競プロ - みんはや - プライムビデオ
  2. こう書くとどうでしょうか - not は || よりも演算子の優先度が低い - ! と not

    は演算子の優先度が異なる - 思い違いから意図しない挙動に next CLIENT if not ($finished || $result < $MIN_ACCEPTABLE);
  3. 紹介するもの - % perldoc perlstyle - https://perldoc.jp/docs/perl/5.26.1/perlstyle.pod - Perlの文化を知れる -

    Perl Best Practice - https://www.amazon.co.jp/dp/4873113008/ - 業務中の悩みの答えになる
  4. perlstyle - Perlスタイルガイド • 4 カラムのインデント。 • 可能なら、開始中かっことキーワードを同一行に; そうでなければ、開始をそろえる。 •

    複数行 BLOCK の開始中かっこの前にスペース。 • 1 行の BLOCK は中かっこも含め、1 行で。 • セミコロンの前に空白なし。 • "短い" 1 行 BLOCK ではセミコロンを省略。※ • ほとんどの演算子の前後にはスペース。 • "複雑な"代入(ブラケット内)の前後にはスペース。 • 異なることをするチャンクの間には空行。 • else をくっつけない。 • 関数名と開始カッコの間にはスペースなし。 • カンマの後ろにはスペース。 • 長い行は、演算子の後ろで改行する(and と or を除く)。※ • 行の最後のカッコの後ろにスペース。 • 対応する要素の開始位置をそろえる。 • 冗長な表現は、わかりにくくならない限りは省略する。
  5. 複数行 BLOCK の開始中かっこの前にスペース for my $name (@names) { ... }

    for my $name (@names){ ... } PBPはK&Rスタイ ルを推奨 for ... { BSD }
  6. 長い行は、演算子の後ろで改行する push @steps, $steps[-1] + $radial_velocity * $elpased_time + $orbital_velocity

    * ($phase + $phase_shift) - $DRAG_COEFF * $altitude push @steps, $steps[-1] + $radial_velocity * $elpased_time + $orbital_velocity * ($phase + $phase_shift) - $DRAG_COEFF * $altitude; PBP perlstyle PBP
  7. 対応する要素の開始位置をそろえる。 $name = standardize_name($name); $age = time - $birth_date; $status

    = ‘active’; $name = standardize_name($name); $age = time - $birth_date; $status = ‘active’; とても見やすい
  8. 主要部を前に open(FOO,$foo) || die "Can't open $foo: $!"; die "Can't

    open $foo: $!" unless open(FOO,$foo); 主要部が 前! or も可
  9. ループのラベルは積極的に使う LINE: for (;;) { statements; last LINE if $foo;

    next LINE if /^#/; statements; } - lastはアウトデント - ループのラベルは積極的に使う perlstyleとPBPの両方 で紹介されている
  10. PBPで紹介されているもの - 長い代入式は代入演算子の前で分割する - サブルーチンを後続の開きカッコから分離しない $preficted_val = $average + predicted_change

    * $fudge_factor; 2行目が前の続きとす ぐわかる my @candidates = get_candidates($marker); 制御構文は前後に空白を入れ るため、見た目で関数だとわか る
  11. 良いコードの手助けをするツール - Perl::Critic; - 構文チェック - Perl::Tidy; - 自動整形 -

    -pbpオプションでPBPの形式にしてくれる 各種エディタの拡張機能と合わせることができる