在我看來,項目部門應該是非常細緻的,即使是「只有一個webapp」。
我會爲數據訪問層接口和實現,業務層接口和實現以及webapp本身製作單獨的項目。我還會製作至少一個「共同」項目,用於包含與其他項目相關的代碼。但這僅僅是個開始。無論正在開發的應用程序(字符串,日期,反射等)如何,我都會毫不猶豫地提取相關實用程序類的commons-util項目。我也會在做測試時做一個有用的工具項目(commons-test)。這只是下一步...;)
如果我寫了一般有用的代碼與hibernate相關,我會把它放在一個hibernate-utils項目中。有用的Spring實用程序將用於spring-utils項目等。在這樣做時,許多項目只包含一個或幾個包,而包通常包含幾個類。
我這樣做的理由是它幫助我思考我寫的代碼。這是真正的業務邏輯,還是一般的字符串操作,日期操作,Hibernate特定的邏輯等?我的圖層變得更乾淨,並且在包和項目之間獲得循環依賴關係變得更加困難(我們不需要這些)。另外,在其他項目中重用代碼變得更加容易。總會有其他項目......
我也發現新開發人員更容易得到一個結構的掛起,因爲項目變得更小,更易於管理;當你覺得你不必承受任何事情時,開始編碼會更容易。
作爲細粒度方法的最後一個優點,構建時間減少是因爲您不必每次都構建一切。
你是否發現你的IDE的內存需求爆炸與這麼多的模塊? – krosenvold 2008-12-16 18:50:12