2009-11-11 61 views
0

我開始使用c#開發,並且聽說它說所有的標準控件都應該在自定義類中「包裝」,即使此時我沒有添加任何額外的功能。引用此案例的例子是某人開發系統的應用程序,在部署之前的一個晚上,客戶要求文本框以某種方式行事,類似於舊的大型機系統,開發人員能夠實現此功能在15分鐘內通過修改他們的控制子類,或者類,或者其他任何東西。包裝控件

我應該以這種方式爲標準控件創建自定義包裝嗎?

回答

3

我個人不這樣做,我不認爲我會建議,如果你是剛在C#開發開始。

我包控制在較高的水平,並使用模型視圖演示模式的數據並允許控件的變化而無需重寫邏輯的視覺分離。

2

我真的不能看出它應該值得費心。如果出現類似於您所描述的情況,那麼使用tag mapping仍然可以實現同樣的效果,它基本上可以讓您編寫自己的包裝,並且說:「在我的代碼中的任何地方,當我說TextBox時,我的意思是MyCustomTextBox」

1

這聽起來很像未來打樣到我,因爲習慣我儘量避免對可能發生的事情做出決定。這種包裝控制會讓你的代碼更復雜,更難以維護。儘管如此,我不知道你所處的特定情況,你所描述的可能是一種常見現象。

可能有更好的方法去了解它,可能通過使用接口和不同的設計模式,但你真的必須使用你是什麼舒服和理解好。在混亂的項目以及允許客戶在任何時間點做出任何決定的客戶尤其如此。如果您認爲這是處理這種情況的最佳方式,並且您認爲在項目中發生描述的可能性很大,那麼這可能不是一個壞主意。這可能不是我的選擇,但這並不意味着這是一個錯誤的決定。

2

雖然您所說的開發人員被稱爲他們令人驚歎的作品的下一個彌賽亞,但他們展示了不良的項目管理技巧,無論是讓客戶進行如此接近發佈的變更,還是實際上實施它並在第二天早上將產品滾出。它可能已經工作過了,但下一次他們嘗試時,當客戶端系統出現意外的錯誤時,最終可能會產生巨大的惡夢。

在任何情況下,以這種方式擴展的控制,以防萬一你可能需要在未來某個時候,是不是好的做法。只寫出你需要寫的東西來滿足規範 - 稍後當你有時間刻錄的時候會出現額外的內容。

1

heard it said that all standard controls should be 'wrapped' in a custom class

首先,誰說,你應該閱讀我的wiki的問題:Ways to prevent over-engineering。有人問,專門幫助像他們....

在回答你的問題,我的建議是僅在必要。如果你提供了一個場景,那麼我可以更具體一些,但是,作爲一個普遍的共識,這是一個明確的沒有