我是AOP領域的新手。我第一次編寫應用AOP概念的東西時,我很高興能夠理解方面如何消除應用程序中的交叉模式。我想到解決諸如安全,日誌,交易,審計等使用AOP的交叉模式的想法。
但是,當我第一次向我所服務的客戶提議使用AOP時,我被告知他們不支持它。我被告知AOP意味着更多的維護!如果您的代碼更改,您的切入點必須更改。因此,每當您更改應用的代碼時,您可能必須分析,更改和測試您的方面。
你對此有何評論?爲什麼主流公司還沒有公開廣泛使用AOP? AOP世界在哪裏?面向方面編程的未來
回答
AOP是一個相對較新的概念,大公司一般都對新概念保持警惕。他們擔心會遇到很多AOP代碼,無法找到能維護它的人。
關於具體的批評,似乎不知情或被誤解。 AOP的重點在於通過減少跨領域關注領域的代碼重複來減少維護工作。但是,通過讓代碼更難理解代碼更加困難 - 使用AOP,當您查看特定的代碼段時,確實會在其他位置定義的某個方面完全改變其行爲。我個人並不確定AOP的好處(真的有那麼多的交叉問題嗎?),這個問題超過了這個問題。我能看到解決這個問題的唯一方法就是通過IDE中的支持。但是讓你更加依賴IDE並不是一件好事。
的趨勢似乎是對應用程序服務器和解決具體的,重要的橫切關注點就像在一個類似的方式AOP事務和安全性(即中央聲明性定義),但框架不給你它的全部力量來迷惑維護開發商。
AOP就是其中一種有趣的想法,它在實踐中並不能很好地發揮作用。 Java的AOP現在有十年或更長的時間可用,並且它沒有被使用太多,因爲它似乎引入了比修復更多的問題。
我不得不在應用程序上做一些性能優化,我選擇在AspectJ中編寫自定義分析器。我一開始對使用AOP持懷疑態度,但是我意識到它絕對是這項工作的完美工具。
但是,有很多工作,我不會使用它。我會非常小心地將它用於可能影響應用程序功能的任何事情。額外的間接層和缺乏透明度會爲嘗試添加功能或修復錯誤的開發人員帶來太多問題。
人們忘記了Java註釋及其在Guice和Spring等框架中的使用是受AOP啓發的。我會說Java註釋是AOP今天要去的地方。
我們使用AspectJ AOP實現,對此非常滿意。你應該認爲它只是你的工具包的另一部分,它使得一些概念在'普通'的java中更容易表達。我們目前主要使用它來爲我們的服務提供JMX接口。
的確,更多的IDE應該支持它(我在看你JetBrains!),這肯定會有助於採用。
有人告訴我,AOP意味着更多的維護!
這只是愚蠢的,完全錯誤的。 AOP是從代碼中獲取噪音的關鍵工具,可讓您專注於交付業務價值。當業務規則發生變化時,您不必花費數英里的框架邏輯來反映代碼中的新變化。
與其他工具一樣,您必須確保正確使用它。我不得不解決的事實,我的AOP記錄會在不經意間記錄解密的信用卡:
http://www.agileatwork.com/what-happens-when-you-actually-use-aop-for-logging/
- 1. 面向方面編程C#
- 2. 面向方面編程StructureMap.DynamicInterception
- 3. Qt中的面向方面的編程
- 4. 什麼是面向方面的編程?
- 5. Spring Roo和麪向方面的編程
- 6. 面向方面的編程:在C#慢#
- 7. Java中面向方面的編程
- 8. CakePHP中面向方面的編程
- 9. 面向方面的編程實例
- 10. 面向方面的編程框架
- 11. 面向功能,動態和麪向方面編程的模式
- 12. 春季面向方面編程
- 13. ActionScript 3面向方面編程
- 14. Android中面向方面編程
- 15. 面向方面編程Clojure中
- 16. 面向方面編程和麪向對象編程有何區別
- 17. Angularjs面向未來嗎?
- 18. 面向方面的谷歌應用程序引擎編程(Java)
- 19. 面向方面編程在面向對象的世界突破規則?
- 20. r中的面向方面的編程:任何可用的庫?
- 21. 在面向對象編程方面哪種方法更好?
- 22. 有沒有完整的面向方面的編程語言?
- 23. ASP.NET MVC中的面向方面的編程
- 24. @DeclareParents在面向方面編程的介紹中的註釋
- 25. 面向對象編程方法問題
- 26. python面向對象編程方法
- 27. 面向facebook的編程
- 28. 我可以在OCaml中執行面向方面的編程嗎?
- 29. 面向方面編程中的對稱和不對稱
- 30. 使用反射或面向方面的編程?
我看你已經創建實際已切斷了不少,長期命名標籤這個問題。你不會以這種方式實現分類學家的徽章。 – 2009-06-06 06:53:38
@Ctrl Alt D-1337我不確定你在說什麼?我不在這裏收集徽章。 – Jay 2009-06-06 06:57:53
programmi? http://stackoverflow.com/questions/tagged/aspect-oriented-programmi – 2009-06-06 07:02:15