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