【发布时间】:2010-12-08 07:37:39
【问题描述】:
我正在为客户创建一个 Rails 应用程序,并且正在考虑创建思维导图或直接跳转到 Cucumber 规范。
您如何规划您的 Rails 应用程序?
另外一个问题,假设您也是从 Cucumber 开始的,那么您会在什么时候编写单元测试?在满足规格之前?
【问题讨论】:
-
我认为这应该是社区维基。
标签: ruby-on-rails project-planning mindmapping
我正在为客户创建一个 Rails 应用程序,并且正在考虑创建思维导图或直接跳转到 Cucumber 规范。
您如何规划您的 Rails 应用程序?
另外一个问题,假设您也是从 Cucumber 开始的,那么您会在什么时候编写单元测试?在满足规格之前?
【问题讨论】:
标签: ruby-on-rails project-planning mindmapping
我有一个 6 步流程。
我更喜欢在做任何事情之前弄清楚模型关系和用途。通常,我尝试将模型定义为包含连贯信息块的单元。通常这首先确定我的应用程序需要的正交资源(用户、帖子等)。然后,我找出每个资源绝对需要(属性)和可能需要(关联)的信息,以及如何操作这些信息(方法),从那里我定义了一组规则来管理资源一致性(验证)。
我通常会重复我的设计几次,因为定义其他模型的行为通常会让我重新思考我已经完成的模型。一旦我有了我喜欢的模型设计,我将开始重构或专门化(子类化)模型以阐明设计。
我编写迁移并为我的模型制作骨架。在实现方法和验证的初稿之前,我通常不会编写测试。在进行一些适度的思考之前,如何实现事情并不总是显而易见的。
接下来是测试套件。我用什么来编写测试并不重要,只要我能确定后端是健全的。
这是我拼凑控制流的时候。成功的请求会发生什么?请求失败?哪些控制器操作将链接到其他控制器?通常控制器和模型之间存在 1-1 映射(不包括模型的子类),我经常会遇到需要对多种模型类型进行操作的情况,为此我可能会创建一个新控制器。根据我的应用程序的复杂程度,我可以将流程建模为状态机。
最后我创建了视图。我首先勾勒出深受模型关系和属性影响的 UI。抽象出公共部分,然后写视图。
优化用户界面。我创建了一个 CSS,并开始用远程调用替换链接,或者在适当的时候甚至只是 javascript。
我可以将第 2 步和第 3 步交错。我发现在编写要测试的代码之后编写测试非常容易。特别是因为我通常在编写时在控制台中进行测试,而一半的测试是通过从控制台粘贴来编写的。
我还可以为每个模型/控制器划分步骤 4 和 5。我可以回头修改任何一点,以前的决定,并通过我的步骤传播这些更改。
【讨论】:
我从用户界面的草图开始,然后进入 HTML 模型。 UI 设计完成后,我可以识别应用程序中的 RESTful 资源及其关系。
【讨论】:
我不认为仅将黄瓜功能作为规范编写是一个好主意。编写测试代码但无法通过测试会导致测试出错,并增加您稍后需要更正它们的时间。
所以我会做以下事情:
因此,您将在驱动应用程序的同时编写规范。保持清洁,同时保持敏捷,并能够在项目中间改变一些想法。
【讨论】: