2017-04-11 7 views
0

私はいくつかの既存のPHPフレームワークを使用してWeb開発プロジェクトに携わっています。 Webアプリケーションでは、Webフォームからユーザー入力データを取り出し、内部的に生成されたデータとともにデータベースのさまざまなテーブルに保存します。既存のコードをデバッグすると(もちろん、私のコードは設計されていませんでした)、既存のコードが同じ入力フィールドを複数回検証していることがわかりました。 Webフォーム自体には約10の入力フィールドがあります。しかし、トレース結果は、StringValidatorだけに約250ヒットがあることを示しています。私はまだ他のバリデータ(IntegerValidatorsなど)のヒット数を数えていません。同じ入力フィールドを複数回検証することをお勧めしますか?

私がここで話しているすべての検証はバックエンドで行われており、同じ入力フィールドに対して検証ルールは同じです。つまり、コードは同じ検証ルールを複数回使用しています入力フィールド。たとえば、ID「first_name」のフィールドがあり、このフィールドが5回か6回の文字列かどうかを検証します。私はいくつかの異なるバリデーター(例えば、必須、文字列、エキゾチックな文字を含まないなど)で同じ入力フィールドを検証することについて話しているわけではありません。

このようなコーディングの実践について、大丈夫、悪い?またはこの種のPHP実行時間の無駄遣いは大丈夫ですか?

ご迷惑をおかけして申し訳ありません。

+0

コードの実行には最適化が必要です。検証された入力を将来の参照用にキャッシュすることを検討してください。 – GeorgeQ

答えて

1

私の意見では、検証の面では、同じ入力を複数回検証することは大丈夫です。例えば、そのためのいくつかの例があります:フィールドはフィールドでなければなりません

  • がに存在するフィールドは、特殊文字(あるいは単にASCII文字)を含めることはできません
  • 文字の特定の番号が含まれている必要があり

    • 特定のデータベースレコード
    • (見つかった)フィールドのレコードには、何らかのアクションを実行するための特権が必要です。

    しかし、250の検証を使用して10フィールドを数えれば、それはあまりにも多いと思います。あなたはコードを分解して何をしているのかを見極める必要があります。同じ検証規則を2回以上実行すると、それは悪いことです。

    なぜ2回は大丈夫ですか?フロントエンドで入力を検証した後、ルールAを使用してajax検証を行います。その後、送信プロセスでは、サーバでルールAで検証を再確認します。

  • +0

    ありがとうございました!私が話しているすべてのバリデーションはバックエンドにあり、バリデーションルールは同じです。たとえば、フィールド名が "first_name"で、コードがこのフィールドが5回か6回の文字列かどうかを検証しています。 – charlesqwu

    +2

    これが問題であれば、同じルールを使用して複数の検証を行う必要はありません。 – Haqqi

    2

    あなたが見ているものが小切手の間で変更されない場合、同じことを何度も何度も再確認することは何の意味もありません。一度点検してください。そうでない場合は、悪い習慣であり、時間を無駄にします。チェックしているものが変更されなければ、結果も変わらないからです。

    こちらがお役に立てば幸いです。

    関連する問題