最佳实践:应用程序设计顺序

时间:2010-10-15 18:14:33

标签: ruby-on-rails design-patterns tdd

我可以想到在创作Web应用程序时需要创建的很多组件。我知道它应该可以逐步完成,但是我想知道你通常会处理这些任务的顺序。布置你常用的事件顺序和一些理由。

我想到的一些可能的组件或部分:

  • 故事(即pivotaltracker.com
  • 综合测试(Rspec,Cucumber,...)
  • 功能测试
  • 单元测试
  • 控制器
  • 浏览
  • Javascript功能
  • ...

问题是,你做的一切都是零碎的吗?(一个故事,一个集成测试,让它通过,转移到下一个,......)或先完成所有的一个组件然后转到下一个。

1 个答案:

答案 0 :(得分:3)

我是BDDer,所以我倾向于从外到外。在高层次上,这意味着首先建立项目愿景(你会惊讶地发现很少有公司真正做到这一点),确定其他利益相关者及其目标(法律,架构等),然后将其分解为功能集,功能和故事。故事是我们可以获得反馈的最小可用代码段,它可能与一个或多个场景相关联。这就是Chris Matts所说的“功能注入” - 创建功能,因为它们需要支持利益相关者目标和项目愿景。 I wrote an article about this a while back.我证明这一点是正确的,因为无论你的代码有多好或经过充分测试,如果它首先是错误的代码都无关紧要。

一旦我们有了故事和场景,我倾向于首先编写UI,然后是支持它的类。 I wrote a blog post about a real-life example here - 我们使用Java进行编程,因此您可能需要使用Rails做一些不同的事情,但原则仍然存在。当实际上要描述的行为时,我倾向于开始编写单元测试 - 也就是说,一个类的行为取决于它的上下文,以及之前已发生的行为。通常,第一个类确实是控制器,我倾向于使用静态数据来填充UI以使其成形。我将编写第一个单元测试来帮助我摆脱静态数据。

首先使用UI让我可以尽早获得利益相关者的反馈,因为它是用户将与之交互的UI。然后我从“快乐的道路”开始 - 让用户做最有价值的事情 - 然后是特殊情况,验证等。

然后我尽我所能说服我的PM让我们尽早发布我们的代码,因为只有当用户真正掌握它时才会发现你真正做错了。