Featured image of post if文がネストしていくPerlのユーザー登録バリデーションを、検証ルールごとのクラスに分けてChain of Responsibilityにたどり着く全3回【目次】

if文がネストしていくPerlのユーザー登録バリデーションを、検証ルールごとのクラスに分けてChain of Responsibilityにたどり着く全3回【目次】

Perl でユーザー登録フォームの入力検証を if 文で書き始め、パスワードや年齢のルールを足してネストが深くなったところで、Moo で検証ルールを1つずつクラスに分け、set_next でつなぐ Chain of Responsibility パターンに組み直す全3回の連載の目次です。どこから読むか、困りごとからも選べます。

Perl でユーザー登録フォームの入力検証(バリデーション)を書いていく全3回の連載です。名前とメールアドレスの必須チェックを if 文で書くところから始め、パスワードの強度や確認用パスワードの一致、利用規約への同意、年齢制限を足して if 文のネストが深くなったところで、検証ルールを1つずつ Moo のクラスに分け、set_next でつなぐ Chain of Responsibility パターンに組み直します。

各回は前の回のコードに手を入れていく作りなので、通して読むなら第1回からが早道です。このページは目次を兼ねた案内板です。入口は「どこから読むか」で、困りごとが決まっているなら「困りごとから探す」で、順に追うなら「全話一覧」で選んでください。

対象は、Perl の基本的な文法がわかる方です。コードは Perl v5.36 以降(サブルーチンシグネチャ)で書いています。第3回では Moo の has と extends でクラスを書くので、Moo が初めてなら、先に前シリーズ「変数とサブルーチンだけで書いていたPerlを、Mooのクラスで整理する全12回」の目次(このページの最後にリンクがあります)から読んでください。

どこから読むか

  • 第1回 — バリデーションを if 文で書くところから、設計が変わる順にたどりたいなら。第2回で、ルールを足すと何が困るかを確かめる
  • 第2回 — if 文がネストしていく様子と、その何が困るのかから入りたいなら。前提は第1回の validate_user
  • 第3回 — 検証ルールをクラスに分けてつなぐ形を先に見たいなら。第2回の問題点と並べた表がある

困りごとから探す

入力チェックを、どう書き始めればいいかわからない

  • 第1回 — 名前とメールアドレスの必須チェックと形式チェックを、まず if 文で書きたい
  • 第1回 — 最初のエラーで止まらず、全部のエラーをまとめて返したい

検証ルールを足すたびに、if 文が深くなっていく

  • 第2回 — 確認用パスワードのチェックを、パスワード強度の else の中にしか書けない
  • 第2回 — パスワードの最小文字数を変えるだけでも、ほかの検証に影響しないか確かめにくい

検証ルールを、1つずつ足したり外したりしたい

  • 第3回 — 検証ルールを1つずつクラスに分け、set_next で順につなぎたい
  • 第3回 — 禁止ワードのような新しいルールを、クラスを1つ作ってつなぐだけで足したい

全話一覧

必要なモジュール

第1回と第2回は外部モジュールを使いません。第3回で使う Moo はインストールしてください。

1
cpanm Moo

関連シリーズ

変数とサブルーチンだけのPerlを、Mooのクラスで整理する(このシリーズの前提)

同じChain of Responsibilityを、ECサイトの決済審査で組む全3回

アラートの誤爆を、判定を担当ごとの鎖に分けて直す(Chain of Responsibility)

参考リンク

comments powered by Disqus
システム開発・AIワークフローのご相談は Meetsource へ
Hugo で構築されています。
テーマ Stack は Jimmy によって設計されています。