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

ぼくがPerlで開発を行う時に工夫していること

36e748c47de34549cfa3ac0950c5351d?s=47 ybrliiu
April 16, 2018

 ぼくがPerlで開発を行う時に工夫していること

Gotanda.pm #17

36e748c47de34549cfa3ac0950c5351d?s=128

ybrliiu

April 16, 2018
Tweet

Transcript

  1. ぼくがPerlで開発を行うときに工 夫していること by liiu Gotanda.pm #17 1 / 12

  2. 自己紹介 liiu / @_ybrliiu MobileFactory 18新卒 (希少な)Perl使いです プログラミング / 歴史

    / (F|T)PS 学生時代にCGIゲーム運営してたりしていました 2 / 12
  3. アジェンダ 僕が個人でPerlを使うときに工夫していることをいくつか お話します 引数の受け取り方 未定義値の扱い方 よく使うプラグマなどを一度に有効にする 3 / 12

  4. 引数の受け取り方 できるだけサブルーチンの最初の行で引数を明示 する shiftはなるべく使わない sub hoge { my ($foo, $bar,

    $baz) = @_; ... } sub method { my ($self, $arg1) = shift; } 4 / 12
  5. signatures使いたい experimental早く外れてほしい sub hoge($foo, $bar, $baz = 'default string') {

    ... } 5 / 12
  6. 未定義値の取り扱い 未定義値を返す可能性のある関数やメソッドには maybe_ 未定義値を持つ可能性のある変数にもmaybe_と いう接頭辞を必ずつけるようにしています MooseのMaybe型も活用 6 / 12

  7. こんなのも作ってました https://github.com/ybrliiu/p5-Scalish 7 / 12

  8. 使用例 use Scalish qw( option ); subtest 'match' => sub

    { my $option = option 'something'; my $ret = $option->match( Some => sub { 200 }, None => sub { 404 }, ); is $ret, 200; my $none = option undef; my $ret2 = $none->match( Some => sub { 200 }, None => sub { 404 }, ); is $ret2, 404; }; 8 / 12
  9. よく使うプラグマなどを一気に有 効にする package NewApp::Exporter { use strict; use warnings; use

    utf8; use feature qw( :5.26 signatures ); sub import { $_->import for qw( strict warnings utf8 ); feature->import(qw[ :5.26 signatures ]); warnings->unimport('experimental::signatures'); } } 9 / 12
  10. 使用例 use Moose; use Mojo::Base; と同じようなことをしてい ます package NewApp::Service::DoSomething {

    # enable strict, warnings, utf8, feature(':5.26'), and signatures # disenable warnings 'experimental::signatures'; use NewApp::Exporter; sub do_something($self) { ... } } 10 / 12
  11. メリット たくさん記述したりスニペット登録の必要がな いので楽 DRY べんり!!! デメリット 初めて見る人にはぱっと見て何をしているか わからない 11 /

    12
  12. 12 / 12