在我看来,项目部门应该是非常细致的,即使是“只有一个webapp”。
我会为数据访问层接口和实现,业务层接口和实现以及webapp本身制作单独的项目。我还会制作至少一个“共同”项目,用于包含与其他项目相关的代码。但这仅仅是个开始。无论正在开发的应用程序(字符串,日期,反射等)如何,我都会毫不犹豫地提取相关实用程序类的commons-util项目。我也会在做测试时做一个有用的工具项目(commons-test)。这只是下一步...;)
如果我写了一般有用的代码与hibernate相关,我会把它放在一个hibernate-utils项目中。有用的Spring实用程序将用于spring-utils项目等。在这样做时,许多项目只包含一个或几个包,而包通常包含几个类。
我这样做的理由是它帮助我思考我写的代码。这是真正的业务逻辑,还是一般的字符串操作,日期操作,Hibernate特定的逻辑等?我的图层变得更干净,并且在包和项目之间获得循环依赖关系变得更加困难(我们不需要这些)。另外,在其他项目中重用代码变得更加容易。总会有其他项目......
我也发现新开发人员更容易得到一个结构的挂起,因为项目变得更小,更易于管理;当你觉得你不必承受任何事情时,开始编码会更容易。
作为细粒度方法的最后一个优点,构建时间减少是因为您不必每次都构建一切。
你是否发现你的IDE的内存需求爆炸与这么多的模块? – krosenvold 2008-12-16 18:50:12