1

述語 (条件の入力をテストするブール値関数であるオブジェクト) は、一般にステートレスであると見なされます。

状態を持つテスト機能を持つオブジェクトに最も適切な名前は?

たとえば、Java では、CountTrigger以下のクラスは、目的の値と一致する値に対してテストされた N 回目にのみ true を返し、それ以外の場合は false を返します。

 interface QuasiPredicate<T>  // what should this be renamed to?
 {
      public boolean test(T value);
 }

 class CountTrigger<T> implements QuasiPredicate<T>
 {
      // for simplicity, ignore synchronization + null-value issues
      private int remainingTriggers = 0;
      final private T testValue;

      public CountTrigger(T testValue, int count)
      {
          this.remainingTriggers = count;
          this.testValue = testValue;
      }
      @Override public boolean test(T value)
      {
          if (!this.testValue.equals(value))
              return false;
          if (this.remainingTriggers == 0)
              return false;
          if (--this.remainingTriggers == 0)
              return true;                  
      }
 }
4

1 に答える 1

1

それがインターフェースであり、インターフェースではimplementedないことを考えるとextended、述語を実装するオブジェクトに問題は見られません。

インターフェースにも入れるつもりpublic CountTrigger(T testValue, int count)なら、別の名前が必要かもしれません。おそらく、IFiniteRule または別の適切な同義語です。多分https://english.stackexchange.com/で聞いてください;-)

于 2013-01-19T10:21:38.013 に答える