3

在 TDD 或迭代模式中构建应用程序时,是否有最喜欢的设计模式?

4

5 回答 5

7

我认为这个问题可以重写,所以用这些话更有意义:

“在使用测试驱动和增量开发策略时,哪些架​​构模式和策略有助于实现灵活性?”

我的回答是:帮助你解耦你的类和组件的模式,比如:

  • 控制反转和依赖注入- 帮助您保持类和组件之间的依赖关系与特定实现分离,这些实现在运行时(或启动时间)之前解决,允许使用存根用于尚未实现的功能和单元测试。

  • Facades - 帮助您隔离组件,为它们之间的交互提供定义良好的接口,从而减少耦合。

  • 工厂和其他创建模式- 它们在负责实例化对象的代码部分中为您提供了灵活性。

还请记住,增量和迭代开发的口号之一是“做最简单的可能可行的事情”。不要过度设计。

根据您的要求,这有意义吗?

于 2008-09-23T09:07:24.303 回答
4

不要混合不同的东西。您可以在适用时使用模式,这样可以节省您的时间和精力,并使您的代码看起来更标准。它与您的开发方法无关!

但是,您可能想在应用程序架构中强调一些事情:

  • 让事情变得非常模块化。拥抱松散耦合。
  • 在模块之间定义清晰的概念边界。概念上的意思是一开始就应该很清楚,感觉自然。一个随机的程序员询问它应该回答“哇,很明显你是怎么做到的!”。
  • 从小处着手。不要试图生产 ZOMG,这将是最好的和最通用的类​​库和程序等等。让事情发挥作用,然后扩展,但仅限于必要时。
  • 说服自己 YAGNI(你不需要它)。不要做你不确定必须做的事情。这并不意味着拖延或什么。它的意思是不要做任何事情,因为“我不知道,它将来可能有用”、“它在技术上很花哨”、“我会包括它以防万一”。
  • 干燥 -不要重复自己。确保您不会遇到代码重复问题。想想代码生成器、良好的抽象以及整个团队的高效沟通。
于 2008-09-23T09:00:46.220 回答
2

我不确定这是一个有意义的问题。但我不会让这阻止我...

当应用程序在您选择的敏捷过程下发展时,特定模式很可能会变得明显适合应用程序设计的各个方面,但是(希望不会误会)引用Ron Jeffries的话,“代码会告诉你”。

编辑:但如果你想要一个明确的答案,那就是 Bridge。这是一个很好的。或者访客,我也喜欢那个。或者大多数以“F”开头的。:)

于 2008-09-23T08:39:14.073 回答
-1

设计模式是帮助解决特定类型问题的工具。模式的使用受需求范围定义的问题支配,而不是受开发方法学支配。

于 2008-09-23T08:39:42.637 回答
-3

使用像 Python 或 Ruby 这样的动态语言进行开发:您不必与其他语言的许多问题作斗争,这些问题首先是“设计模式”的原因。

动态语言与自动化测试相结合将非常快速地给出结果,因此您知道要采取的方向。如果您意识到出于性能原因或任何可以翻译您已经构建的动态软件的原因,您应该使用静态语言。

于 2008-09-23T08:37:11.863 回答