在TDD或迭代模式下构建应用程序是否有最优选的设计模式?
答案 0 :(得分:7)
我认为这个问题可以改写,所以用这些词语更有意义:
“在使用测试驱动和增量开发策略时,哪些架构模式和策略对于实现灵活性非常有用?”
我的答案是:帮助你解开你的clases和组件的模式,例如:
Inversion of Control and Dependency Injection - 帮助您保持类和组件之间的依赖关系与特定实现分离,这些实现在运行时(或启动时)之前被解析,允许使用存根来实现尚未实现的功能和单元测试
Facades - 帮助您隔离组件,为它们之间的交互提供定义良好的接口,减少耦合。
工厂和其他creational patterns - 它们为您提供了负责实例化对象的代码部分的灵活性。
还要记住增量和迭代开发的咒语之一是'Do the simplest thing that could possibly work'。不要过度工程。
根据你的要求,它是否有意义?
答案 1 :(得分:4)
请不要混用不同的东西。您可以在适用时使用模式,从而节省您的时间和精力,并使您的代码看起来更加标准。 与您的开发方法无关!
但是,您可能想要强调应用程序架构中的一些内容:
答案 2 :(得分:2)
我不确定这是一个有意义的问题。但我不会让那阻止我......
完全有可能特定模式可能变得明显,因为它适合于您的应用程序设计的各个方面,因为它在您选择的敏捷过程中发展,但是(希望不会错误地)引用Ron Jeffries,“代码会告诉你“。
编辑:但如果你想要一个明确的答案,那么Bridge。这是一个很好的。或访客,我也喜欢那个。或者大多数以“F”开头的。 :)
答案 3 :(得分:-1)
设计模式是帮助解决特定类型问题的工具。模式的使用受到需求范围所定义的问题的控制,而不是开发方法。
答案 4 :(得分:-3)
使用像Python或Ruby这样的动态语言来开发:你不必为解决其他语言中的许多问题而斗争,这些问题首先是“设计模式”的原因。
动态语言与自动化测试相结合可以非常快速地提供结果,因此您可以知道要采取的方向。如果你意识到出于性能原因你应该使用静态语言,或者你可以翻译你已经构建的动态软件。