通常,当我创建新类时,我首先会创建一个新接口。我完全按照我希望它们的行为命名我的接口的方法。我的一位同事更喜欢让这些方法名称更抽象,即:areConditionsMet()。原因,他想隐藏“实施细节”。
IMO 实施细节与预期行为不同。谁能提供更多见解。我的目标是与我的同事达成共识。
通常,当我创建新类时,我首先会创建一个新接口。我完全按照我希望它们的行为命名我的接口的方法。我的一位同事更喜欢让这些方法名称更抽象,即:areConditionsMet()。原因,他想隐藏“实施细节”。
IMO 实施细节与预期行为不同。谁能提供更多见解。我的目标是与我的同事达成共识。
您的方法名称应该描述该方法的作用,而不是它的作用方式。您给出的示例是一个非常糟糕的方法名称,但它比isXGreatherThan1AndLessThan6()
. 在不知道它应该做什么的细节的情况下,我会说它应该针对手头的问题,但足够笼统,以至于实现可以在不影响名称本身的情况下进行更改,即您不想要方法的名称变脆。一个例子可能是isTemperatureWithinRange()
- 描述了我正在检查的内容,但没有描述它是如何完成的。该方法的用户应该确信输出将反映温度是否在某个范围内——无论是作为参数提供还是由类的合同定义,都无关紧要。
接口方法的名称应该让接口的用户从功能的角度毫不怀疑该方法打算做什么。如果实现与此匹配,那就太好了。
根据您更新的评论:
听起来你需要两种方法:isModified()和hasProperties()。由域对象的用户(或更高层)来确定是否满足特定标准。
接口的设计还应该考虑到它发布后永远不会改变。通过说 isDomainObjectModifiedAndHasProperties() ,您具体设置了这是完整的标准(无论将来有任何未预见的实现)。
接口应该代表一些行为或能力,而不是要完成的方式。接口的用户不应该对实现目标的方式感兴趣,他们只想知道它完成了。
出于这个确切原因,实施问题不应包含在方法的名称中。由于此方法或使用的技术而更新的表名称与您的域对象的方法名称无关。
但是,从您的问题来看,很难说手头的确切情况是什么。
如果您可以提供更多详细信息,也许我可以提供额外的帮助。