2009-05-26 45 views
2

如何知道我是否過度分解?檢測過度分析

我最近3天一直在追逐一個問題。我經歷了許多設計,並使用大約3個課程達成了複雜的解決方案。經與同事討論後,我意識到我需要的只是一種方法和一個struct。我怎樣才能避免成爲architecture astronaut

回答

5

我發現如果我在30分鐘內不能提出一個好的清潔解決方案,幾乎總是最好與其他人討論。
即使他們不知道如何解決它,它通常會觸發更好的設計或解決方案。

所以跟別人談談吧。

+1

說出來的確是一種幫助 - 即使它只是「橡皮鴨分析」,與在http://lists.ethernal.org/oldarchives/cantlug-0211/msg00174提倡的「橡皮鴨調試」類比.html! - ) – 2009-05-26 14:58:45

0

我曾經患過這個問題。設計一個能夠應對未來大量增長的解決方案,而不是。確保它具有良好的抽象性,從而產生上述類型的擔憂。

然後,我拋棄了這種方法,把它全部變成了一個很髒的類,也許是兩個。之後,我重新考慮了它,直到它看起來像是我想讓別人去做的事情。

2

就個人而言,我真的不能抱怨任何實際上先安排軟件的人!我這樣做,但我知道程序員的地段誰只知道如何做到這直接進入代碼...我經常要解決這樣的代碼......

這就是說,你的真正的要求是怎麼知道當問題得到更好的解決時。

我給你的建議是反覆問自己:我在想我的解決方案的細節還是關於真正的問題?

0

我喜歡做一些快速&髒首先,當它的工作,我一步一步地重構代碼,直到我滿意設計。

這也是TDD方法。

0

我發現自己以下三個步驟找到一個「理想」的解決方案:

  1. 如果我有在世界上所有的時間和資源,這將是在任何方面的最佳解決方案。 (技術上,從邏輯上講,性能方面,可選解決一些相關問題,重新編寫模塊,你發現可以做的更好......)在這裏做你的(過度)的分析,只是去了解的玉米粥越好。運行測試,統計和創建驗證的概念的。

  2. 它是如何從目前的情況不同。兩種解決方案的結果有什麼區別?有沒有更快的方法來達到相同或相似的結果。爲什麼這個或那個改變會解決手頭的問題。做更多的測試,統計,更新你的概念驗證。

  3. 找到一種方法來實現所需的更改,而只需要所需的更改,放棄任何不是這一變化所必需的。檢查你沒有修改任何沒有問題的東西。測試這個,檢查代碼,邏輯,結構的變化;並儘可能減少它們。

這聽起來非常嚴格(和很多工作),但實際上我發現自己最終在某些情況下將整個表添加到數據庫。部分工作(因爲確實需要做很多工作)是檢查所有現有的代碼與這個額外的表加入的工作是否完全相同。

最重要的是,在大多數情況下,我們需要迎合在更新之前保留在系統中的「過渡數據」,這些數據必須在更新後生成併發送。

1

避免成爲架構宇航員的最佳方式是養成正確跳入的習慣。最好的方法是編寫一些測試,當您的實現完成並且正確時,這些測試將通過。這迫使你面對從一開始就「完成」意味着什麼,它提供了將遵循的代碼的完整性檢查。

然後找一個解決方案。

您現在可能第一次到達那裏,但以「完成」意味着牢記的想法開始的練習將幫助您隨時提出更好的問題,並提前進行一些驗收測試將有助於將設計空間剔除爲合理的東西。