2009-01-27 87 views

回答

15

IMO,我們的工作是解決我們客戶的問題,而不是編寫依賴注入(或日誌記錄或ORM等)框架。當存在一個合適的框架時,在我看來,你應該總是使用這個框架。

要補充一點,如果該框架是開源的,那麼沒有理由不使用它,因爲您可以修復任何可能的缺點。

我認爲我們經常失去我們的目標網站。作爲程序員,我們傾向於關注有趣的問題(例如編寫依賴注入框架)並拖延無聊的問題(爲客戶編寫另一個CRUD應用程序):D

+0

+1提拖延無聊的東西。我總是努力找藉口去寫一些很酷的代碼大教堂,以避免寫出無聊的必要的東西。 – Phil 2010-03-05 03:36:14

5

我認爲DI框架是那裏現在是相當穩固的(至少對於.Net)......爲什麼要花所有時間到re-invent the wheel

1

我當然會使用其中一種可用的解決方案。雖然它開始很簡單,但有一些功能(如各種代理功能)在全功能的DI框架中絕對不是簡單的。也許你還想要一些AOP?

但是任何體面的DI框架對你寫代碼的方式應該沒什麼影響,所以有可能爭辯說它對你的代碼沒有太大影響。

這對付款的人來說可能很重要。在你的情況下,我會得到一個可用的源代碼的DI框架,並知道來源,而不是寫你自己的。

+0

如果我想要代理生成器和AOP,我會使用Spring。完成。 8)(但你和我一樣知道。) – duffymo 2009-01-27 20:30:17

2

最初做一個DI框架似乎不是什麼大事,但如果你看看Castle和Spring.NET這樣的框架,我可以想出更好的方式來花時間。除非你需要特別的東西,否則我會採用其中一種可用的框架並利用其他框架的工作。

0

選項3:不要使用依賴注入(尚)。

您剛開始一個新項目。你真的需要一個DI框架嗎?

開始開發項目,您可能會看到一些有問題的依賴關係。一旦它們開始出現,您可以評估現有的DI框架並確定哪些框架適合。

誰知道,你可能會發現你根本不需要DI框架。

即使Martin Fowler的說:

控制反轉是框架的共同特徵,但它的東西,是有代價的。當您嘗試調試時,它往往難以理解並導致問題。所以總的來說,我寧願避免它,除非我需要它。這並不是說這是一件壞事,只是我認爲它需要通過更直接的選擇來證明自己的合理性。

http://martinfowler.com/articles/injection.html

如果我是你,我會避免使用任何依賴注入,直到你絕對不能沒有它度日。

請記住,在大多數情況下,YAGNI

1

DI框架一直在不斷髮展,它們還具有其他功能,例如使您的代碼更容易測試。當項目發展時,編寫自己的代碼會更加容易出錯並且更加複雜。

如果你需要DI並選擇一個有良好的支持,我會說他們使用它們。

0

你可以編寫一個依賴注入位的包裝器,所以如果你想在以後切換DI框架,你不需要擔心庫依賴或者任何地方改變代碼。例如,不是直接調用container.Resolve,而是寫一個爲您調用container.Resolve的工廠類,並且只調用工廠類。