如果我的課堂只有私人領域的容器注入會怎麼樣?這是好還是壞?在那種情況下,我必須在測試中使用DI框架(並且可能並不壞),但在另一方面,沒有設置者沒有不必要的代碼。不好還是不好?在沒有setter的情況下使用依賴注入是不好還是很好的做法?
2
A
回答
0
strong text **首先,通過setter方法DI有哪些替代方案? Martin Fowler區分three ways:**接口,二傳和構造函數注入。所以這些方法都不是好的或壞的定義,這是你如何使用它們以及最適合你的系統的方式。如果你希望你的字段在創建對象後不可改變,請使用帶有私有字段的構造函數注入。 儘管如此,Setter注入是DI最常用的方式,幾種框架依賴它。如果你不確定這樣去。你還會發現很多關於它的信息。
如果您的問題針對的使用制定者所有,問題是如果你的類是一種數據結構(見馬丁的Clean Code 6章詳細信息)。換句話說,如果您的班級沒有其他目的而不是持有一些數據,並且您可以公開您的字段(*)。如果它擁有業務邏輯,則使用私有字段和getter/setter。
(*)我個人不同意這一點,但那只是我。 :-)
1
Setter方法是實現抽象的方式,這是OOP最重要的原則之一。理想情況下,代碼不應該依賴容器。我認爲setter方法將提供使用DI的標準方式,並且具有良好的代碼可讀性。除非我的類實例化依賴於其他一些依賴項(我將使用基於構造函數的DI),否則我總是認爲setter DI是一種好的做法。
我認爲你不應該依賴容器來執行DI。
希望這會有所幫助。
0
必須使用DI框架進行測試非常沒有吸引力,測試將會涉及更多並且運行速度會變慢。這本身就夠糟糕,我不會主張這種方法。與構造函數注入和最終字段一起使用可以進行容器外測試,同時還可以完成確定字段內容的工作。
相關問題
- 1. 在這種情況下使用uint64_t是不好的做法嗎?
- 2. 有沒有人對依賴注入有很好的比喻?
- 3. 在使用依賴注入時,有沒有'新'的情況?
- 4. 使用共依賴類是不好的做法嗎?
- 5. 抽象初始化()方法而不是依賴注入,好的做法?
- 6. 是否存在不應用依賴注入的情況?
- 7. 使用依賴注入的好處Spring
- 8. 依賴注入和其他構造參數 - 不好的做法?
- 9. 在PHP中使用exec是不是很好的做法?
- 10. 在特殊情況下使用保留變量值是不好的做法嗎?
- 11. 在沒有任何DI庫的情況下使用依賴注入
- 12. 是不是很好的做法,或者至少不是不好的做法,不要使用限制
- 13. 網站使用自己的API是不是很好的做法?
- 14. 在onPause()方法中調用GC是不是很好的做法?
- 15. RAD:依賴注入 - 好處?
- 16. 依賴注入使用情況
- 17. 依賴注入 - 什麼是最好的方法?
- 18. 使用「視圖」進行分組是不是很好的做法?
- 19. 這種情況下最好的做法是什麼?
- 20. 是一個好的做法注入IKernel insted業務接口依賴項
- 21. 依賴注入 - 注入容器還是個人依賴?
- 22. Rails在模型中測試小方法是好的還是不好的做法?
- 23. 是否可以在不依賴注入的情況下驗證FormRequest?
- 24. 使用依賴注入還是有簡單的解決方案?
- 25. GOTO是一種很好的做法嗎? (在這個PHP的特殊情況?)
- 26. 在這種情況下是不是使用eval()和字典更好的方法?
- 27. 總是加入SQL表是否是一種很好的做法?
- 28. 如何在沒有Browserify的情況下使用CommonJS依賴項?
- 29. 是否可以在沒有彈簧依賴的情況下啓動Mule3嵌入?
- 30. 安裝依賴關係時使用IoC容器是不好的做法還是代碼味道?
通常我會使用一個構造函數,而不是讓容器直接設置字段......使用構造函數可以很容易地進行測試,並且允許字段在編譯器中不會發出嗚嗚聲。 –