2009-10-20 74 views
13

我開始爲客戶提供Rails應用程序,並且正在考慮創建思維導圖或直接跳至Cucumber規範。你如何規劃你的Rails應用程序?

你如何規劃你的Rails應用程序?

作爲一個額外的問題,假設你也從Cucumber開始,那麼你會寫單元測試嗎?在滿足規格之前?

+1

我認爲這應該是社區wiki。 –

回答

4

我不認爲只寫規格黃瓜功能是一個好主意。編寫測試代碼而不能測試它會導致測試中的錯誤,並增加稍後需要糾正的時間。

所以我想做到以下幾點:

  • 寫一些心智圖。但要保證項目的主要想法很簡單。
  • 在sime時間開始寫測試和編碼(寫一個測試,使其通過,寫另一個測試,...)。

所以,你會寫你的規格,而駕駛你的應用程序。保持清潔,但也保持敏捷,並能夠在項目中間改變一些想法。

+0

明確定義域是反敏捷的嗎? – Alexandre

+1

不需要。只要您允許自己在項目演變之前更改您之前定義的內容,您就保持敏捷。 –

+0

我正在考慮儘早編寫這些功能,以便能夠確定哪些模型方法是需要的,然後編寫單元測試,然後返回到讓功能通過。 – Alexandre

5

我從用戶界面的草圖開始,然後進展到HTML模型。一旦UI設計完成後,我可以識別應用程序中的RESTful資源及其關係。

+0

嗨John, 您不能通過仔細映射域來識別RESTful資源嗎? – Alexandre

+0

你可以這樣做,但從UI開始,首先幫助我確定域邊界的位置。見http://gettingreal.37signals.com/ch06_From_Idea_to_Implementation.php –

36

我有6個步驟的過程。

  1. 我喜歡的工作了模型的關係,做任何事情之前使用。通常我會嘗試將模型定義爲包含連貫信息塊的單元。通常這通過識別我的應用程序將需要的正交資源(用戶,帖子等)開始。然後我找出這些資源中每一種絕對需要的信息(屬性),並可能需要(關聯),以及信息如何在(方法)上運行,從那裏我定義了一組規則來管理資源一致性(驗證)。

    我通常會重複我的設計幾次,因爲定義其他模型的行爲通常會讓我重新思考已經完成的模型。一旦我有了我喜歡的模型設計,我將開始重構或專門化(子類化)模型以闡明設計。

  2. 我爲我的模型編寫遷移和構建骨架。除非實施方法和驗證的初稿,否則我通常不會寫測試。在給予一些溫和的想法之前,如何實施並不總是顯而易見的。

  3. 接下來是測試套件。無論我用什麼來寫測試,只要我可以確定後端是理智的。

  4. 這是我拼湊控制流的時候。成功的請求會發生什麼?不成功的請求?哪些控制器操作將鏈接到其他人?通常情況下,控制器和模型之間存在1-1映射(不包括模型的子類),我經常會遇到需要在多個模型類型上執行操作的情況,因爲我可能會創建一個新的控制器。根據我的應用程序的複雜程度,我可以將流程建模爲狀態機。

  5. 最後我創建視圖。我首先勾畫出基於UI的模型,這很大程度上受到模型關係和屬性的影響。抽象出公共部分,然後寫出觀點。

  6. 波蘭的用戶界面。我創建了一個CSS,並開始用遠程調用替換鏈接,甚至在適當的時候甚至只是javascript。

我可能會交錯步驟2和3.我發現在編寫要測試的代碼後編寫測試非常容易。特別是因爲我通常在寫一個控制檯時測試東西,而測試的一半是從控制檯粘貼的。

我也可以爲每個模型/控制器劃分步驟4和5。任何一點我可以回頭修改,以前的決定,並通過我的步驟傳播這些變化。

+0

你不說你如何識別模型和控制器。 –

+1

我有點掩飾。對於這樣一個模糊的問題,我覺得這個描述太深入了。我已編輯,現在包括它。當我在其中時,我爲我的其他步驟添加了類似的細節,甚至添加了一個。 – EmFi

相關問題