代码之家  ›  专栏  ›  技术社区  ›  Stefan Hendriks

接口中方法的命名应该是具体的还是抽象的?

  •  0
  • Stefan Hendriks  · 技术社区  · 14 年前

    通常,当我创建新的类时,我首先创建一个新的接口。我按照自己希望的方式命名接口的方法。我的一个同事更喜欢将这些方法名抽象化,例如:areConditionsMet()。原因是,他想隐藏“实现细节”。

    IMO实现细节与预期行为不同。有谁能提供更多的见解吗?我的目标是与同事达成共识。

    3 回复  |  直到 14 年前
        1
  •  1
  •   tvanfosson    14 年前

    您的方法名称应该描述该方法的功能,而不是它的功能。您给出的示例是一个非常差的方法名,但它比 isXGreatherThan1AndLessThan6() . 在不知道它应该做什么的细节的情况下,我会说它应该是针对手头的问题的,但是一般来说,实现可以在不影响名称本身的情况下进行更改,也就是说,您不希望方法的名称是脆弱的。一个例子可能是 isTemperatureWithinRange() -这描述了我正在检查的内容,但没有描述它是如何完成的。该方法的用户应该确信,输出将反映温度是否在一定范围内——无论是作为参数提供还是由类的契约定义——都是无关紧要的。

        2
  •  0
  •   AlonEl    14 年前

    接口应该表示一些行为或能力,而不是它的实现方式。界面的用户不应该对目标的实现方式感兴趣,他们只想知道它的实现方式。

    由于这个确切的原因,实现问题不应该包含在方法名称中。由于该方法或使用的技术而更新的表名与域对象的方法名无关。

    然而,从你的问题来看,很难说具体情况是什么。

    如果你能提供更多的细节,也许我可以提供额外的帮助。

        3
  •  0
  •   Adrian Regan    14 年前

    接口方法的名称应将该接口的用户保留在 毫无疑问 关于该方法从函数的角度建议做什么。如果实现与之匹配,那么很好。

    根据您的最新评论:

    我觉得你需要两种方法: ISMODEFIDED() HasPrimes() . 由域对象的用户(或更高层)决定是否满足特定条件。

    一个接口也应该设计成在它被释放后它将 从未 被改变。通过说isDomainObjectModifiedHasProperties(),您可以在具体设置中 这个 完整拍摄的标准(无论未来是否有任何未见过的实施)。