代码之家  ›  专栏  ›  技术社区  ›  ivan_ivanovich_ivanoff

对于归属或属性接口,什么是一个好的(自然语言)命名方案

  •  9
  • ivan_ivanovich_ivanoff  · 技术社区  · 16 年前

    注意:这是 流行的接口命名问题 使用或不使用 “我” 一开始。

    一种接口,表示类的归属或属性。
    (见下表)

    • 指出 “善良” 班级的
      数据结构,数字,东西

    • 指出 “专业” 班级的

    • 表示 可能的行动 在课堂上表演

    所有人都很清楚,但让我们来谈谈我的问题:

    • 归属或财产
      HasListener、LinksToRoot、BelongsToParent、KnowsString、ContainsChildren、, 名字,描述。。。?

    最后一点是我的问题。我的英语不太好, 但即使是我也对这样的名字感到奇怪。 在我看来,他们的选择不如其他人成功,更有意义。 但我经常选择正确的名字。

    在需要接口的C中,这甚至更不舒服 从一个 “我”
    我是听众,我不知道。。。
    听起来像 LOLSPEAK “我可以 kitteh 可爱,天哪!@#!"

    那么,我应该如何命名一个接口来表示属于或 类的属性?

    6 回复  |  直到 11 年前
        1
  •  9
  •   Yuval Adam    16 年前

    问题在于你如何选择描述“财产的归属”。

    你给出的大多数例子都可以映射到你提到的其他类别。

    只是一些,例如:

    HasListener公司 听得见的

    集装箱 =>工具 起源

    带说明 =>工具 可描述的

    尽量使用更传统的命名方案,最好是以最好、更易读的方式描述对象的命名方案。

    另外,确保你没有 你的类有无用的接口。让它非常简洁和切中要害,否则你的开发人员读你的代码会很快迷失方向。

        2
  •  4
  •   Fredrik Mörk    16 年前

    在您概述的一些问题案例中,我认为可以通过“从另一面”来寻找答案:

    HasListener -> Speaker
    LinksToRoot, HasParent -> Child (or perhaps Node)
    ContainsChildren -> Parent
    

        3
  •  0
  •   Welbog    16 年前

    我认为你可以把你正在做的事情转化成“专业”类型的界面:

    • HasListener ListenerContainer
    • WithDescription -> DescriptionContainer ( Describable

    很多其他接口似乎都与树结构有关。我建议根据它们在树中的功能来命名它们。

    • ContainsChildren -> Parent Collection
    • BelongsToParent Child

    至于其他的接口,我需要更多地了解这些接口的具体用途。其中一些,比如 Named

        4
  •  0
  •   amischiefr    16 年前

    对我来说,这些名字听起来很糟糕,我同意。“HasListener”听起来更像是一个应该返回布尔值的方法调用,而不是接口名。

    接口不应存在以保存/存储类的属性。它们应该用来勾勒出实现它的所有类都应该遵循的关系。我个人坚持“是”的关系。如果有一个直接的关系,即猫“是(n)”动物,那么我将为它创建一个接口,并给它命名为animal,给它一个合理的名称。

    我很想知道“HasListener”接口概述了什么。它到底起什么作用?为什么不能将它命名为MyProjectListeners(用项目名称替换MyProject)来描述为这个项目定义的侦听器必须遵循什么?

        5
  •  0
  •   b.roth    16 年前

    HasListener公司 也可以 听得见的 . 我不反对这些。

    但是 IHasListener 很糟糕:首先因为我们不需要I前缀来判断它是一个接口(看看类签名!)第二个原因是听起来像“我不会说英语”。

    伊鲁尔 . :)

        6
  •  0
  •   Paul Stovell    16 年前

    在.NET Framework中,可以在以下接口中找到:

    • IRaiseListChangedEvents公司
    • IHasXmlNode

    像“Listenable”这样的名称表示实现执行侦听,而不是包含侦听器。IHasListener清楚地说出了它的作用。