sironekotoroの日記

Perl で楽をしたい

2022-06-01から1ヶ月間の記事一覧

「良いコード/悪いコードで学ぶ設計入門」第8章 密結合 単一責任の原則 #ミノ駆動本

ちょっと時間あいてしまいましたあが、のんびりやっていきます。 来月7月はお仕事が忙しくなる予定なので、やっぱり時間が空いてしまうのではないかなぁ、という感じです。 8章は6章なみに長くて盛り沢山だし・・・ しかし、現実逃避的に学習が進む可能性も…

「良いコード/悪いコードで学ぶ設計入門」第7章 #ミノ駆動本

リスト7.1 「牢屋の鍵」の所持を調べるコード まずは例示コードを愚直に。 #!/usr/bin/env perl use strict; use warnings; use feature qw/say/; use constant { false => !!0, true => !!1 }; my $has_prison_key = false; my @items = qw(steal_sword iro…

「良いコード/悪いコードで学ぶ設計入門」第1章〜第6章のまとめ #ミノ駆動本

一旦まとめ 7章を目前に、どの内容をどこで学んだんだっけ・・・?というのを自分なりにまとめておきたくなりました。 コード書いたからか、結構覚えているなーという感じです。 あと、本を先に進めたい!という気が勝っておざなりにしてるところがあるなぁ…

「良いコード/悪いコードで学ぶ設計入門」第6章その4 フラグ引数 #ミノ駆動本

リスト6.62 フラグ引数を使っている例 damege(true, damegeAmount); 確かに、これだけでは何が true なのかはコードを追いかけて関数の中身を見ないとわからんよなぁ。 ということで、それを「メソッドを分離する」で改良したところから。 ここクリックして…

「良いコード/悪いコードで学ぶ設計入門」第6章その3 型チェックで分岐しない #ミノ駆動本

リスト6.51〜6.54まで 一気にまとめたコードがこれ。 途中でしれっと出てくる Money クラスの add メソッドも書いております。 ・・・Perl で書き換えながらめっちゃ書きにくさを感じることがあります。 このコードだと、interface の HotelRates の中で分岐…

MouseX::AttributeHelpers に感動した話

「このコード、動いたけど納得いかないかっこ悪い。絶対にもっとまともな実装の方法が有るはず」という直感は外れたことない気がする— sironekotoro (@sironekotoro) 2022年6月13日 という直感があって、その解が得られるタイミングは往々にして年単位だった…

「良いコード/悪いコードで学ぶ設計入門」第6章その2 ポリシーパターン #ミノ駆動本

リスト6.41 と 6.42 Gold会員とシルバー会員の判定メソッド あー、こういうコード書いた覚えあります・・・ ゴールド会員の判定ロジック if ( 100000 <= $history->total_amount ) { if ( 10 <= $history->purchase_frequency_per_month ) { if ( $history->…

Perl で interface を理解するための長い旅

脚注からヒントを得る ここしばらく「良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方」をやっております。 gihyo.jp その中でインターフェースって何?ということでググりつつ、適当にネットから拾いつつやっていたのですが…

「良いコード/悪いコードで学ぶ設計入門」第6章その1 ストラテジーパターン #ミノ駆動本

早期 return でネスト解消 まぁ、これは書くまでもなく、わかる。 というか、例示コード書くのも辛い・・・ if ( $a == 1 ) { if ( $b == 2 ) { if ( $c == 3 ) { } } } 的な。 これに else や elsif が入ってくるとさらにカオスになるという。 ネストの深淵…

「良いコード/悪いコードで学ぶ設計入門」第5章 後半 #ミノ駆動本

リスト5.19 C# の出力引数 ここでサンプルコードが C# になってますが、まぁなんとか読める気がします。 関数に参照渡しを行って宣言元の変数を変えるというコードです。 Perl だとこんな感じですかね。 #!/usr/bin/env perl use strict; use warnings; sub …

Perl 5.36 が出ました &(anyenv経由の)plenvでのインストール&移行方法

祝!Perl 5.36 ! ということで、初夏のはじめ頃のイベントである Perl の新規安定版リリースです。 metacpan.org うちは(anyenv経由の) plenv で複数の Perl のバージョンを扱っているので、 plenv での作業を書いておきます。 誰のためってもちろん、来…