代码之家  ›  专栏  ›  技术社区  ›  Jens Schauder

命名接口时出现问题

  •  0
  • Jens Schauder  · 技术社区  · 14 年前

    我有一个名为 PropertyFilter 以前需要 Property 决定是否接受。世界是美好的。

    但是现在接口改变了,所以实现可以选择添加额外的 s。例如a Customer Name Address

    澄清一下:所谓的filter实际上是一个带有签名的方法

    Property -> List<Property>
    

    一个空列表表示不接受该属性,一个正好包含输入属性的列表表示接受该属性,一个包含新属性(可能包括原始属性)的列表表示展开。

    4 回复  |  直到 14 年前
        1
  •  1
  •   guillaume31    14 年前
    • 属性检查
    • 财产蒸馏器
    • 属性贷方

    你提到的方法已经有名字了吗?它还可以帮助我们找到接口的正确名称。

        2
  •  0
  •   archbishop    14 年前

    我不太清楚你的新功能是什么。如果它仍然返回布尔值,那么返回布尔值的函数的另一个名称是“谓词”。

    如果它接受一个客户并对其进行分解(也许您有一个函数接受一个客户并返回一个名称,另一个函数返回一个地址),那么我可以称它们为“访问器”。这个术语通常用来描述一个对象的成员函数,但我认为它也可以应用于这里。

        3
  •  0
  •   Tony the Pony    14 年前

    如果 Customer 有一个 Name Address ,它不再是 财产 实体 .

    客户 财产可能是 客户

        4
  •  -1
  •   David Siegel    14 年前

    我将添加一个名为 validate Property 签字:

    PropertyFilter -> Bool
    

    的默认实现 简单地通过 this

    def validate (filter: PropertyFilter) = filter (this)
    

    作为复合财产, Customer 验证 ,根据其复合属性实现:

    override def validate (filter: PropertyFilter) = name.validate (filter) && address.validate (filter)
    

    这边,每个人 财产 可以描述如何应用任何给定的 PropertyFilter 对自己。我认为你应该避免列表扩展的方法。