【问题标题】:Interface naming for adjectives形容词的接口命名
【发布时间】:2009-08-12 13:54:55
【问题描述】:

好的,如果您可以轻松想到一个名词,那么命名接口(或类)就很容易:用户、窗口、数据库、流等。

形容词或形容词的概念呢?例如有时间戳的东西(HasTimestamp、Timestamped、Timestampable...?)或被跟踪或观看的东西(Trackable、IsTracked、Watchable、IsWatched...?)

【问题讨论】:

    标签: oop interface naming-conventions


    【解决方案1】:

    我倾向于使用-able 后缀。 Java 库中也有很多这种命名约定的好例子,例如:

    例如,具有标签的东西在此命名约定下将被命名为Taggable,具有时间戳的东西是Loggablesince

    时间戳通常用于记录事件,在这种情况下,日志中的每个事件都标有时间戳。在文件系统中,时间戳可能意味着创建或修改文件的存储日期/时间。

    【讨论】:

    • 虽然我通常也遵循这种模式,但“able”并不总是完全适合一些更复杂的模式——例如,IDeterminesEmptyValue。可能是 ICanDetermineEmptyValue。 IEmptyValueDeterminable 没有多大意义。
    • 我喜欢你的整体推理,但对于我的口味来说,“Loggable”这个词离时间戳太远了。
    • @Jason:我必须承认 Loggable 的名字有点强制 :-)
    【解决方案2】:

    这是个好问题。我尝试使用名词命名我的所有接口和类。所以我最终可能会得到像 ITrackingTarget、IObservee 这样的名字。时间戳是有趣的。也许是 ITimestamp 本身?

    使用访问者模式,你会怎样称呼表示接受 IVVisitor 的对象的接口?

    【讨论】:

    • VisitableObject ?访客用户?
    【解决方案3】:

    我也倾向于使用名词。

    对于可以打开/关闭的对象,您始终可以使用详细的 OpenableObjectOpenableInterface :即使组合了,您也会得到一个名词。

    由于它很冗长(而且有点傻),我倾向于使用 Openable 而不是 OpenableObject。如果我想强调它是一个接口这一事实,我会使用 OpenableInterface

    对于使用依赖反转模式的对象,我有时会使用“用户”后缀:ImageUser、LoggerUser、ServiceXUser、...

    最好使用名词,但我更喜欢清晰而不是严格遵守规则。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-20
      相关资源
      最近更新 更多