哪种设计模式最适合迭代开发?
时间:2020-03-06 14:35:13 来源:igfitidea点击:
是否具有在TDD或者迭代模式下构建应用程序的最喜欢的设计模式?
解决方案
使用Python或者Ruby之类的动态语言进行开发:我们不必与其他语言所面临的许多问题作斗争,这些问题首先就是"设计模式"的原因。
动态语言与自动测试相结合,将很快得出结果,因此我们知道该朝哪个方向前进。如果我们意识到出于性能原因或者应该翻译已经构建的动态软件而应该使用静态语言。
我不确定这是一个有意义的问题。但是我不会阻止我...
在我们选择的敏捷过程中,随着特定模式的发展,特定模式很可能变得很适合应用程序设计,但是(希望不会误)引用Ron Jeffries的话,"代码会告诉我们"。
编辑:但是,如果我们要确定的答案,那么请桥接。那是一个很好的。或者访客,我也喜欢那个。或者大多数以" F"开头的代码。 :)
设计模式是帮助解决特定类型问题的工具。模式的使用受需求范围定义的问题支配,而不是由开发方法支配。
请不要混用其他东西。在适用时使用模式,可以节省时间,精力,并使代码看起来更标准。它与开发方法无关!
但是,我们可能需要在应用程序体系结构中强调一些事项:
- 使事情变得非常模块化。拥抱松散的联轴器。
- 在模块之间定义明确的概念边界。从概念上讲,我的意思是一开始应该很清楚,感觉自然。一个随机的程序员问它应该回答"哇,很明显,你是怎么做到的!"。
- 从小开始。不要尝试制作ZOMG,这将是最好和最通用的类库和程序,无论如何。使工作正常,然后扩展,但仅在必要时进行。
- 说服自己YAGNI(我们不需要它)。不要做不确定不能做的事情。这并不意味着拖延或者其他任何事情。这意味着不要做任何事情,因为"我不知道,将来可能会有用","从技术上讲是花哨的","为防万一我会包括在内"。
- 干-不要重复自己。确保我们没有遇到代码重复问题。考虑一下整个团队中的代码生成器,良好的抽象和有效的沟通。
我认为这个问题可以重写,因此在这些方面更有意义:
"使用测试驱动和增量开发策略时,哪些体系结构模式和策略对于实现灵活性很有用?"
我的答案是:可以分离句点和组成部分的模式,例如:
- 控制反转和依赖注入-保持类和组件之间的依赖与特定的实现分离,这些特定的实现在运行时(或者启动时间)之前就已解决,从而允许将存根用于尚未实现的功能和单元测试。
- 外墙-隔离组件,并为它们之间的交互提供定义明确的界面,从而减少耦合。
- 工厂和其他创建模式-它们在负责实例化对象的代码部分中为我们提供了灵活性。
还请记住,渐进式和迭代式开发的口头禅之一是"做可能可行的最简单的事情"。不要过度设计。
根据要求有意义吗?