|
|
1
1
这真是个好问题。一般来说,BDD、TDD和敏捷并不是说你不能做前期设计,他们只是说不要设计得超出你的需要——尽可能推迟任何决定。我相信有一套工具,你知道,这正是用于这一点,它被称为UML:)。你暗示努力方面是完全正确的。只要UML图只是图片,它们就成了开发过程中丢弃的浪费和维护负担,这时事情可能会迅速变化。但是,您可以使用一些CASE工具,它将允许您(在几个月之后)swearing:D...)要创建图表,可以用来生成代码,当您需要在模型级别更改某些内容时,只需更改图表并重新生成(这实际上需要一些架构和预先工作,请查看一些模型驱动的方法)。我认为在这方面是最好的,中间会有些东西。它将使您能够轻松地建模(绘制和维护图表、流程图、状态机……),并允许您生成代码。我认为最好的方法是(外部)领域特定的语言。 我在硕士论文中的目标是创建一组多个DSL,这将使您能够以BDD方式描述与应用程序的交互,但将允许您不仅生成Cucumber之类的测试,还可以生成(部分)应用程序布局(显然,如果您想在某个页面上看到按钮,在那个页面上你想有那个按钮。您还可以与一些域对象进行交互,这些对象可以根据使用的体系结构进行建模,例如在域驱动的设计样式中。我认为这是相当现实的,它真的支付模型然后。对于自顶向下的设计,您需要某种抽象来从上到下移动,因此一些预先设计是必要的。 |
|
|
2
1
好吧,那件事我给你2美分。我同意Gabriel的说法,他说UML是你要找的工具。UML的名字表明它是一种语言来为你的应用程序建模。我也同意Dror的观点,他说当你开始重构代码时,很多设计工具都会失败。试图让图表遵循代码是一种痛苦。你有两个主要的可能性:
|
|
|
3
1
研究方法论 Divide and conquer 很直截了当:
重构就变成了寻找和删除重复代码的过程。如果你还没有任何函数式编程的经验,你至少应该尝试一下学习经验。你会发现这种思维方式有助于做好自上而下的设计。 单元测试就是要了解您的依赖关系。你将学会永远不要有一个全局状态(甚至不是单例),并使用 依赖注入 . 这使得您的代码易于测试,因为您可以很容易地测试一个单独的类!如果没有这种技术,您的单元测试最终将变得过于复杂,因为它们不仅测试类本身,而且还测试 它的依赖关系。。。 如果你有一小时的时间,我强烈推荐这个 Google Design Tech Talk: OO Design for Testability . |
|
|
4
0
我不想这么说,但是您可能需要做完全相反的事情—不要预先设计整个系统,而是使用TDD/BDD,您的测试将驱动设计。
|