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