質問

仮に私は、以下の授業に私のプロジェクト:

  • クラス // 検証クラス
  • クラス 数学 // 番号を操作クラス

今したい場合は検証されたprimality場の論理的な場所に挿入っPrime()メソッド?私はを考えることができる以下のオプション

  • Is_Math::Prime()
  • Math_Is::Prime()

こう曖昧さ、遅くなり私の思考過程とが誘うエラーになります。あの例:

  • は::イメージ()または画像::Is()?
  • Is_Image::PNG()またはImage_Is::PNG()?
  • Is_i18n_US::ZipCode()またはi18n_Is_US::ZipCode()または i18n_US_Is::ZipCode()?

の画像の例では、最初の選択肢がよいのi18n例に好立つブログが数多くあります。な標準のような気分にさせてくれ、全体のコードベースが汚.

はありま聖杯解決のための組織の授業でその国の異なるパラダイム?

役に立ちましたか?

解決

とは思わないので曖昧です。"は"必ず一つ一つの例は、チェックしてみてくださいねなぜ:"あ"の上位集の検証業務である::数学です。

の場合は::数学、あけましておめでとうございますか?いうのが実現されるのでしょう。きの妥当性を検証数理体?後者はもちろんのこと、、そうでないなんだける"数学".

の業務の範囲?す。または数学?はいうまでもなく、では概念的には適用で多くの数学者、数学は数学固有のものです。(様の場合は数::要な因子::数学、数学の上位集中率が所属する)

全体的にこの種のOOPingはグループのものに意いたしました。検証機能の場合でも適用さ激しい種類の異なる主体(素数に対PNG画像)により類似どはまだまだたくさん残っているものの比較.戻り、同じ種類のデータと呼ばれ、同じようなのです。

他のヒント

のための数学とえば、私は実際の機能の確認の場合は番号が盛りの Math クラスです。お Is クラスの使い方法という場合は、検証の必要が発生します。いその利用 Math::Prime() からあります。

Image, この型チェック。だいていないのかもしれませんが必要な方法でない限りは、有効な画像データをアップしました。

PNG 方法と同じ Math.の実PNGデータのチェッカーのアルゴリズム Image おもてなしにはバリデータ方式 Is 電話ます。

Zipコード例であるべきお Is クラスのみで動作するstringのプリミティブであろうとも、正規表現(読み:ではな複雑な方法が異なり、PNGチェッカーをするだろう)になります。

いを尊重することを希望小売価格(http://en.wikipedia.org/wiki/Single_responsibility_principleいのexercice:

選択クラスとして記述できます。 だって"と"にご説明移動する必要がありますの方法をその他のクラスです。

ページ参照36: http://misko.hevery.com/attachments/Guide-Writing%20Testable%20Code.pdf

その他の法がありまでをわかりやすく整理するクラス:法のデメーテル(http://en.wikipedia.org/wiki/Law_of_Demeter).

でも様々なことを学び、お手伝いしますを選択しまMiskoのブログ(googleェブサイトで公開): http://misko.hevery.com

武器agiは、dexで下がらないboxerぐ.

すべて 取り扱いに検証そのもの うわご Is-クラス

  • な媒体です。
  • るパーツなかった媒体です。
  • の検証誤差にログインできますか?

Zend_Validate にZendの枠組みを提供などのプログラマブルシェーダーいただいた方の中からです。このアプローチが実施する同インターフェースすべての検証-授業が容易

  • 同じ構文を利用検証、independantlyのようなデータが検証され
  • 容易に認識するバリデーションルールでご用意しているチェックのためのすべてのクラス名 Is_Prime, Is_Image の代わりにチェック Math_Is, Image_Is すべての場所です。

編集:
なぜな構文のようになります:

class Math {
    public function isPrime() {
        $validation_rule = new Is_Prime();
        return (bool) $validation_rule->validates($this->getValue());
    }
}

をも

class Problem {
    public function solveProblem(Math $math) {
        $validation_rule = new Is_Prime();
        if($validation_rule->validates($math->getValue())) {
            return $this->handlePrime($math);
        } else {
            return $this->handleNonPrime($math);
        }
    }
}

ができ上がっていないように思う"正しい答えを教"の問題で記載しています。一部の人が入れプログラムは、Math.が定義しています。その他きなかこの質問です。

現在、解決の曖昧さのなかのどこかにあるのですね。ようなものと考えることができ一部についての規則や規約に従い"というクラス/メソッドがすることができます。この脆く、ルールは必ずしも自明であること、これが非常に困難になっていること、その点はいなくなります。

たすことを示唆してデザインの授業なので、明日の名前が何らかの方法べきます。

な名前をつける検証パッケージです。その総称がほとんどになります。IsFile,IsImage,IsLocked,IsAvailable,IsFullにあなたが音が良い!ありません 結束 そのデザイン。

あるんじゃないでしょうかくに検証成分データをフィルターでサブシステムの境界を実施セキュリティおよび事業規則)、それ以外なにもありません。

後はその決定は、例が顕在化する。総理の組織に所属しMath.は::イメージがあった。内にあります。画像::IsValidがかもその他の方法での営業イメージ(凝集). その他"は、"となりのバッグのすべ, といいます。

とは思わない"は"所属クラス名です。それでいいんじゃないのための方法。

abstract class Validator {}

class Math_Validator extends Validator
{
  public static function isPrime( $number )
  {
    // whatever
  }
}

class I18N_US_Validator extends Validator
{
  public static function isZipCode( $input )
  {
    // whatever
  }
}

class Image_Validator extends Validator
{
  public static function isPng( $path )
  {
    // whatever
  }
}

Math_Validator::isPrime( 1 );
I18N_US_Validator::isZipCode( '90210' );
Image_Validator::isPng( '/path/to/image.png' );

はありま聖杯解決のための組織の授業でその国の異なるパラダイム?

いいえ、その基本的な欠陥のクラスに基づいたoop.この主観的な.

プログラミング(はじめての手続きプログラミング)は、以下の問題、この問題が多く、この問題についてのビルブロックはかなり小さい。Classless oopもお得により、ハイブリッドのoopおよびプログラミングのひとつに違いありません。

授業であると考えることができる足というの妥当性を検証する。

abstract class ValidatingType 
{
  protected $val;
  public function __construct($val)
  {
     if(!self::isValid($val))
     {  // complain, perhaps by throwing exception
        throw new Exception("No, you can't do that!");
     }
     $this->val = $val;

  }
  abstract static protected function isValid($val);
}

まValidatingTypeを検証します。ことを義務付けを作るなら、isValid方法です。

class ValidatingNumber extends ValidatingType
{
   ...
   static protected function isValid($val)
   {
      return is_numeric($val);
   }
}

class ValidatingPrimeNumber extends ValidatingNumber
{
   /*
    * If your PHP doesn't have late-binding statics, then don't make the abstract 
    * or overridden methods isValid() static.
    */
   static protected function isValid($val)
   {
      return parent::isValid($val) 
             or self::isPrime($val); // defined separately
   }
}

class ValidatingImage extends ValidatingType
{
   ...
   static protected function isValid($val)
   {
      // figure it out, return boolean
   }
}

今回のアプローチであることを継続できる新しい検証の種類、および得られないときには、いくつかの膨張するクラスです。

り優雅な変動します。これは簡単な変動しやすい。の構文が必要ですし上げます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top