自動販売機の動作をPerlで再現!「待機中」「コイン投入済み」をif/elseで切り替える状態管理の基礎を学びます。Mooで始めるオブジェクト指向プログラミング入門。
Mooを使ったユーザー登録バリデーションの入門シリーズ。基本のif文実装から、複雑化した検証のリファクタリングまでを解説します。
各検証ルールを独立したMooクラスに分割し、Chain of Responsibilityパターンでチェーン構築。拡張性の高いバリデーションシステムを完成させます。
パスワード強度や確認一致など検証ルール追加でif文がネスト化。保守困難なコードの問題点を体験し、リファクタリングの必要性を学びます。
Perl 5.36でユーザー登録フォームの入力検証を実装します。メールアドレス形式チェック、必須項目確認など基本的なバリデーションロジックをif文で構築。Moo OOPシリーズ卒業者向けの実践編です。
PerlのMooを使ってデータエクスポーターを作成するシリーズ記事の目次です。if/elseの問題からStrategyパターンまで、段階的に設計を改善していきます。
実はこれがStrategyパターンだった!作ってきた設計がGoFデザインパターンの一つであることを明かし、SOLID原則との関係も解説します。
いよいよ完成!全機能を統合したデータエクスポーターの動作確認と、各形式での出力テストを行います。
"csv"や"json"の文字列から自動でエクスポーターを選びたい。Factoryパターン的なアプローチでオブジェクト生成を簡略化します。
間違ったオブジェクトを設定してバグが発生…。isaを使った型チェックで、実行時エラーを未然に防ぐ方法を学びます。
実行時にCSV→JSON→YAMLと出力形式を切り替えたい。is => 'rw'を活用した動的なオブジェクト切り替えの実装方法を解説します。
エクスポーターを一元管理するクラスが欲しい。Contextパターンの考え方でDataExporterクラスを作成し、処理の委譲を学びます。
複数のエクスポータークラスに共通ルールを設けたい。Moo::Roleのrequiresでインターフェースを定義し、統一的なAPI設計を実現します。
複雑なif/elseをスッキリさせたい!CSV出力を専用クラスに分離して、責務分離の考え方とMooでのクラス設計を学びます。
YAMLやXML形式も追加したらコードが複雑に…。if/elseが肥大化する問題を体感し、なぜリファクタリングが必要なのかを理解します。