【问题标题】:How do you plan your Rails app?你如何规划你的 Rails 应用程序?
【发布时间】:2010-12-08 07:37:39
【问题描述】:

我正在为客户创建一个 Rails 应用程序,并且正在考虑创建思维导图或直接跳转到 Cucumber 规范。

您如何规划您的 Rails 应用程序?

另外一个问题,假设您也是从 Cucumber 开始的,那么您会在什么时候编写单元测试?在满足规格之前?

【问题讨论】:

  • 我认为这应该是社区维基。

标签: ruby-on-rails project-planning mindmapping


【解决方案1】:

我有一个 6 步流程。

  1. 我更喜欢在做任何事情之前弄清楚模型关系和用途。通常,我尝试将模型定义为包含连贯信息块的单元。通常这首先确定我的应用程序需要的正交资源(用户、帖子等)。然后,我找出每个资源绝对需要(属性)和可能需要(关联)的信息,以及如何操作这些信息(方法),从那里我定义了一组规则来管理资源一致性(验证)。

    我通常会重复我的设计几次,因为定义其他模型的行为通常会让我重新思考我已经完成的模型。一旦我有了我喜欢的模型设计,我将开始重构或专门化(子类化)模型以阐明设计。

  2. 我编写迁移并为我的模型制作骨架。在实现方法和验证的初稿之前,我通常不会编写测试。在进行一些适度的思考之前,如何实现事情并不总是显而易见的。

  3. 接下来是测试套件。我用什么来编写测试并不重要,只要我能确定后端是健全的。

  4. 这是我拼凑控制流的时候。成功的请求会发生什么?请求失败?哪些控制器操作将链接到其他控制器?通常控制器和模型之间存在 1-1 映射(不包括模型的子类),我经常会遇到需要对多种模型类型进行操作的情况,为此我可能会创建一个新控制器。根据我的应用程序的复杂程度,我可以将流程建模为状态机。

  5. 最后我创建了视图。我首先勾勒出深受模型关系和属性影响的 UI。抽象出公共部分,然后写视图。

  6. 优化用户界面。我创建了一个 CSS,并开始用远程调用替换链接,或者在适当的时候甚至只是 javascript。

我可以将第 2 步和第 3 步交错。我发现在编写要测试的代码之后编写测试非常容易。特别是因为我通常在编写时在控制台中进行测试,而一半的测试是通过从控制台粘贴来编写的。

我还可以为每个模型/控制器划分步骤 4 和 5。我可以回头修改任何一点,以前的决定,并通过我的步骤传播这些更改。

【讨论】:

  • 你没有说你是如何识别模型和控制器的。
  • 我有点掩饰了这一点。对于这样一个模糊的问题,我觉得描述太深入了。我已经编辑现在包含它。在此过程中,我在其他步骤中添加了类似的细节,甚至添加了一个。
【解决方案2】:

我从用户界面的草图开始,然后进入 HTML 模型。 UI 设计完成后,我可以识别应用程序中的 RESTful 资源及其关系。

【讨论】:

【解决方案3】:

我不认为仅将黄瓜功能作为规范编写是一个好主意。编写测试代码但无法通过测试会导致测试出错,并增加您稍后需要更正它们的时间。

所以我会做以下事情:

  • 写一些思维导图。但请保持项目的主要想法简单。
  • 同时开始编写测试和编码(编写一个测试,使其通过,编写另一个,...)。

因此,您将在驱动应用程序的同时编写规范。保持清洁,同时保持敏捷,并能够在项目中间改变一些想法。

【讨论】:

  • 没有。只要您允许自己在项目发展时更改之前定义的内容,您就可以保持敏捷。
  • 我在考虑尽早编写特性以便能够确定需要哪些模型方法,然后编写单元测试,然后再回去让特性通过。
猜你喜欢
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 2014-11-27
  • 2016-06-03
  • 1970-01-01
  • 2011-04-28
  • 1970-01-01
  • 2012-04-15
相关资源
最近更新 更多