据我了解,通常建议按功能而不是按层进行打包。这促进了类之间更高级别的抽象和模块化。
我可以理解它在具有明显特征(registration
,security
等)的常规非库应用程序中是如何工作的,但是在查看静态实用程序库时这很难应用。
例如,看看Google Guava's packaging structure。由于它是一个库,因此很难将库的功能分类到包中。有一个annotations
包,一个networking
包等等。这对我来说感觉像是一个灰色区域,因为它没有以明确的格式打包?
按功能打包时,对包含没有共同功能的独特实用程序类(如库/ API)的内容有什么共识?
另外,如果您的项目被拆分为多个模块,每个模块代表一个功能,那么逐层打包是否有任何意义?