我開始爲客戶提供Rails應用程序,並且正在考慮創建思維導圖或直接跳至Cucumber規範。你如何規劃你的Rails應用程序?
你如何規劃你的Rails應用程序?
作爲一個額外的問題,假設你也從Cucumber開始,那麼你會寫單元測試嗎?在滿足規格之前?
我開始爲客戶提供Rails應用程序,並且正在考慮創建思維導圖或直接跳至Cucumber規範。你如何規劃你的Rails應用程序?
你如何規劃你的Rails應用程序?
作爲一個額外的問題,假設你也從Cucumber開始,那麼你會寫單元測試嗎?在滿足規格之前?
我不認爲只寫規格黃瓜功能是一個好主意。編寫測試代碼而不能測試它會導致測試中的錯誤,並增加稍後需要糾正的時間。
所以我想做到以下幾點:
所以,你會寫你的規格,而駕駛你的應用程序。保持清潔,但也保持敏捷,並能夠在項目中間改變一些想法。
我從用戶界面的草圖開始,然後進展到HTML模型。一旦UI設計完成後,我可以識別應用程序中的RESTful資源及其關係。
嗨John, 您不能通過仔細映射域來識別RESTful資源嗎? – Alexandre
你可以這樣做,但從UI開始,首先幫助我確定域邊界的位置。見http://gettingreal.37signals.com/ch06_From_Idea_to_Implementation.php –
我有6個步驟的過程。
我喜歡的工作了模型的關係,做任何事情之前使用。通常我會嘗試將模型定義爲包含連貫信息塊的單元。通常這通過識別我的應用程序將需要的正交資源(用戶,帖子等)開始。然後我找出這些資源中每一種絕對需要的信息(屬性),並可能需要(關聯),以及信息如何在(方法)上運行,從那裏我定義了一組規則來管理資源一致性(驗證)。
我通常會重複我的設計幾次,因爲定義其他模型的行爲通常會讓我重新思考已經完成的模型。一旦我有了我喜歡的模型設計,我將開始重構或專門化(子類化)模型以闡明設計。
我爲我的模型編寫遷移和構建骨架。除非實施方法和驗證的初稿,否則我通常不會寫測試。在給予一些溫和的想法之前,如何實施並不總是顯而易見的。
接下來是測試套件。無論我用什麼來寫測試,只要我可以確定後端是理智的。
這是我拼湊控制流的時候。成功的請求會發生什麼?不成功的請求?哪些控制器操作將鏈接到其他人?通常情況下,控制器和模型之間存在1-1映射(不包括模型的子類),我經常會遇到需要在多個模型類型上執行操作的情況,因爲我可能會創建一個新的控制器。根據我的應用程序的複雜程度,我可以將流程建模爲狀態機。
最後我創建視圖。我首先勾畫出基於UI的模型,這很大程度上受到模型關係和屬性的影響。抽象出公共部分,然後寫出觀點。
波蘭的用戶界面。我創建了一個CSS,並開始用遠程調用替換鏈接,甚至在適當的時候甚至只是javascript。
我可能會交錯步驟2和3.我發現在編寫要測試的代碼後編寫測試非常容易。特別是因爲我通常在寫一個控制檯時測試東西,而測試的一半是從控制檯粘貼的。
我也可以爲每個模型/控制器劃分步驟4和5。任何一點我可以回頭修改,以前的決定,並通過我的步驟傳播這些變化。
你不說你如何識別模型和控制器。 –
我有點掩飾。對於這樣一個模糊的問題,我覺得這個描述太深入了。我已編輯,現在包括它。當我在其中時,我爲我的其他步驟添加了類似的細節,甚至添加了一個。 – EmFi
我認爲這應該是社區wiki。 –