2012-07-31 102 views
0

下面的方法是在一个抽象基类实现的方法,是由许多子类扩展:命名的评估条件

public final void doSomething() { 
    if(hasBehavior1()) { 
     // special behavior 
    } 

    if(hasBehavior2()) { 
     // special behavior 
    } 

    // do other things 
} 

protected abstract boolean hasBehavior1(); 
protected abstract boolean hasBehavior2(); 

我应该如何命名这些方法hasBehaviorX()对案件的特殊行为

  • 加密一些数据?
  • 忽略错误?
  • 检查是否正确?

特殊行为太容易使用像strategy pattern这样的不同实现模式,所以我在这里真的很在寻找一些有用的命名约定。

+3

怎么样'canXxxx()',而不是'hasXxxx()' ? – kennytm 2012-07-31 10:57:48

+0

如何使用Java代码约定? isEncrypted(),isIgnorred(),isCorrect()?另一方面,你不应该在这里使用多态吗? – m3th0dman 2012-07-31 11:05:25

+0

isEncrytable()怎么样? – Achilles 2012-07-31 13:55:25

回答

0

我找到了一种方法,通过使用与动词布尔成员Java约定在其目前的渐进式的形式来表达特殊的行为:

isEncrypting() 
isIgnoringError() 
isCheckingForCorrectness() 
0

用于检查正确性

isCorrect() 

忽略错误

isErrorIgnored() 

对加密数据

isEncrypted() 
+0

这将是布尔值javabean getters的标准方式。但是,如果我在“这个小类是否要检查正确性?”的意义上询问一个对象'isCorrect()',那听起来不对。如果此方法返回false,这并不意味着它不正确。 – tangens 2012-07-31 20:36:03

+0

那么在那种情况下canCorrect()怎么样? – Shee 2012-08-01 05:07:48

0

考虑,而不是写无操作方法:

protected boolean doBehavior1() {} 
protected boolean doBehavior2() {} 

根据需要在子类中实现。这样,您可以将处理推迟到子类而不需要询问这些子类是否需要这样做。