3
A
回答
11
相反,我認爲明智地使用擴展方法提高了代碼的凝聚力,因爲你可以把方法和類做相關任務一起。這種情況與免費(靜態)方法和C++中的Koenig查找沒有區別,.
的擴展訪問僅僅是語法糖。
+2
+1,確實如此。它是靜態方法中的語法糖,這就是它應該如何使用的。 – 2009-04-24 10:32:40
8
擴展方法就像您的武器庫中的任何工具。當明智地使用它們時,它們是一個強大的附加組件,使您能夠編寫那些笨拙的東西來表達。使用不佳,他們是一個尷尬的柺杖縫合在一起的東西。
這麼說,我不同意你的說法,這違反了代碼凝聚力 - 我認爲它實際上是完全相反的。如果您沒有擴展方法,那麼您將被迫使用散佈在整個代碼中的實用程序類。
1
我不認爲擴展方法違反代碼凝聚力比一組靜態方法做了。因爲在他們的核心擴展中,方法只是一組靜態方法。 C#和VB.Net編譯器爲它們提供了一個很好的友好語法。
人們已經創造了他們不很長一段時間控制類的靜態實用方法,他們融入完善的工程實踐。
相關問題
- 1. 這違反了SOLID原則嗎?
- 2. ReplaySubject.next(value)違反了redux store的不可變狀態原理嗎?
- 3. Chrome擴展程序違反了Google安全政策
- 4. 擴展原型方法
- 5. 反思與擴展方法
- 6. 帶有Javascript的軟件工程原理
- 7. 工廠方法模式是否違反開放/關閉原則?
- 8. 聚合類擴展基類 - 違反LSP?
- 9. 爲什麼UIImageView自己的UIImage。它違反了MVC原則嗎?
- 10. Liskov替代原則 - 我在這裏違反了嗎?
- 11. 在我的例子中違反了Liskov替換原則嗎?
- 12. 這是違反Liskov替換原則嗎?
- 13. 不是工廠模式,違反了「告訴,不要問」的原則嗎?
- 14. 違反SOLID原則
- 15. LINQ方法是擴展方法嗎?
- 16. 我違反了一些JavaScript規則嗎?
- 17. 程序違反工藝類
- 18. 將「方法」建模爲反射資源違反了REST風格?
- 19. 違反了插入
- 20. 如何擴展原生mootools方法
- 21. 擴展的Javascript原型方法
- 22. 擴展繼承原型方法在Javascript
- 23. 的Javascript原型擴展方法
- 24. 擴展方法和擴展屬性是不好的做法嗎?
- 25. Howto調用方法擴展IDictionary(反射)?
- 26. PHP:如何在不違反SOLID原則的情況下使用擴展接口?
- 27. 軟件包安裝擴展?
- 28. 工廠是否違反法的依賴倒置原則?
- 29. 軟件工程UML - 使用「包括」和「擴展」
- 30. 這是否違反了德米特法?
不過要說明爲什麼它會違反「代碼凝聚力」,比如說OO繼承? – 2009-04-24 10:24:52