2011-01-06 52 views
0

一個小項目爲我提供了一個讓自己更好地成爲程序員的機會。我可以找到大量描述控制流結構和dotnet庫的資源,但是我沒有得到的是如何構造整個代碼。我還沒有經過任何形式的結構化編程課程,所以我想確保我沒有發展壞習慣,因爲我的理解有限。我以前做過很多程序編程和一些GUI工作。我已經算出了算法和方法。我需要簡要敘述如何設計這段代碼。尋求關於構建c#dll的高級指導

具體來說,我想創建一個dll,其中包含代碼來將長格式化文本字符串解析爲某種結構化數據。我有必要的正則表達式食譜已準備好檢索數據。大部分字段都是單個值,但可能是一對多的關係。我應該有多少班,他們的角色是什麼?實際的解析發生在哪裏,我應該返回什麼類型的對象?

我對如何繼續直到我知道我描述的是什麼樣的模式感到茫然。

+0

你知道數據的結構嗎?首先從基本的OOP原則開始。然後,決定用例,標識對象,根據這些對象創建類。當你完成這些活動時,情況會變得更加清晰。 @Sleeper指向的鏈接在這方面很有幫助。 – 2011-01-06 08:08:39

回答

0

如果您不確定如何搭建您的物體,請看 OOP SOLID Principles 這是基本的基礎知識。個人而言,任何需要解析/多個參數的實例化,我都喜歡在工廠類中完成它們。更容易以這種方式進行依賴注入。

儘管如此,如果你希望成爲一名優秀的程序員,你一定會一次又一次地重寫。這就是每個人都知道的:)。

無論你做什麼,都不要觸摸靜態方法。他們是邪惡的。

+1

你的意思是'你做了什麼,不要碰靜態方法。他們是邪惡的。'? – 2011-01-06 08:04:32

1

首先想到3層的應用程序。首先是數據或持久層,這可能是數據庫,xml文件或任何其他數據輸入/輸出。第二個是域或業務層,這是業務活動應用的實際邏輯&。最後是表示層,這可能是一個Windows應用程序,網站等。

首先決定是否要採用數據交換方法或以域爲中心的方法。以數據爲中心的方法是您的域圖層類與您的數據結構緊密匹配,使持久性更容易,但您的表示層更復雜。以領域爲中心的方法是您的領域層類更多地反映問題的邏輯實體,通常使演示文稿更直接,但數據持久性複雜。

儘量讓每一層與其他人分開。使用鬆散耦合的接口,在這些接口之間需要進行通信。例如,領域層可以定義一組接口(或者契約),這些接口(或者契約)準確地定義了它需要/期望從領域層出來的東西(例如,使用儲存庫模式和DTO模式的組合)。同樣,表示層應該爲它確實需要/期望從域層獲得什麼定義契約,MVVM模式的VM部分就是一個很好的例子。

域層通常充當數據層和表示層之間的中介,在每層代表業務數據的獨特方式之間進行映射。表示層應該不知道數據層,反之亦然。