2011-07-29 101 views
2

我正在開發Eclipse RCP應用程序。我被告知,UI部分將由設計師(?)通過Window Builder PRO創建,因此我必須爲設計師創建的每個視圖創建業務邏輯。反射有什麼問題?

我的第一個想法是爲每個視圖創建一個Controller類,並通過Reflection的一些幫助(我不知道設計器將創建什麼樣的Widgets)來處理應用程序邏輯。我認爲這將是動態因此欣喜,但我們的領導告訴我,我們不會使用反射。

我聽到了一個非常簡短的說明這並沒有任何意義,我所以我的問題是:

爲什麼使用反射認爲是不好的/不維護?

回答

6

Java是一種強類型語言,有優點和缺點。對於所有的缺點,它會給你非常好的編譯時檢查。在編譯時發現的錯誤/錯誤是找到和修復最便宜的錯誤。

反射是一個運行時間的事情。你不能讓編譯器檢查你使用反射的任何事情,因此如果你使用反射,你會失去很多java的優點。具體而言,您可以編寫可在編譯時運行時爆炸的代碼。有時用於反射類型代碼的術語是「字符串類型」 - 您正在使用方法名稱(字符串)而不是引用實際方法。

當然使用了反射,但是無論何時使用它,請記住您正在顛覆java的強度。只要你的單元測試覆蓋足夠的案例,讓你相信你對它的使用是安全的,就像在你的案例中一樣廣泛地使用它。如果實際使用它的代碼是一個相當小的「實用程序」代碼庫,我會批准它的使用。