Problem:使用许多方法实现fluent接口会导致类复杂性度量的快速增长。
如何为实现fluent接口的类保持低复杂度?
有关特定类的一些信息:
$this->wrapped对象。已考虑的备选方案:
@method注释添加了自动完成支持。反馈(在设计、性能、可维护性等方面)对于任何选项,都是备受期待的。
经核实的例子:
ExpressionBuilder类分隔无论是从PHP实现角度还是从设计角度来看,问题都可以被认为是语言无关的答案都是同样受欢迎的。
编辑:
目的是要有一个好的(易于使用和易于维护)的功能编程工具(map,reduce等)。
发布于 2014-04-02 22:04:29
复杂性是一种软件度量,用来表示开发人员对必须使用的理解缺乏理解。因此,软件实体(包/模块、类、方法)的复杂性越高,它的可维护性就越差。换句话说,修改和维护一个软件实体需要多少时间和精力。
类的主要复杂性类型是:
所有的类型都可以用工具来测量,并且有一个角点,这里的复杂度太高。在这种情况下,为了通过使用Design来降低复杂性,它是一个很好的重构嫌疑犯。衡量复杂性的另一个标准是,类的可测试性。我需要多少存根/模仿,需要多少断言,等等。
如何为实现fluent接口的类保持低复杂度?
Fluent接口是链接方法调用的设计模式。把最好的东西串起来就像真正的短语。它的目的是提供更具可读性的代码。因此,它降低了复杂性。只需增加一行代码即可实现Fluent接口,这只会对方法体和类长度产生较大的影响。因此,fluent接口对复杂性的影响非常低。
随着复杂性的增加,将最好的词组与真实的短语联系起来可能很困难,但是要想解决这个问题,代理类是可以实现的,它将操作委托给没有fluent接口的对象。
一般来说,降低复杂性的最佳方法是将单一责任原则、界面偏析原理、信息隐藏原理和松耦合作为关键方面。
发布于 2014-04-02 21:27:40
一种方法是拥有一个简单、可靠的基类,为实现fluent接口类提供工具方法。然后,fluent接口类只调用基类来完成它所做的一切,将复杂度降低到单一的、流畅的接口类。
您是否已经为您的流畅界面进行了设计?(我想知道你实际使用了多少种方法。)
https://stackoverflow.com/questions/22410727
复制相似问题