1. 包设计清单
1.1. 共通
▲1.1.1. 建议把API和实现放入不同的包
▲1.1.2. 建议把API放进上层包,而把实现放进下层包
▲1.1.3. strong>考虑把一组大型的API分拆进不同的包
▲1.1.4. 考虑把API和实现打包进不同的jar包
▲1.1.5. 避免API的实现类之间的内部依赖
▲1.1.6. 避免把API分拆了太细
▲1.1.7. 避免把公共实现类放到API的包中
▲1.1.8. 不要在调用者和实现类之间建立依赖
▲1.1.9. 不要把没有关系的API放进同一个包
▲1.1.10. 不要把API和SPI(service provider interface)放进一个包(注:两者不同可以查看这个页面http://stackoverflow.com/questions/2954372/difference-between-spi-and-api)
▲1.1.11. 不要移动或者重命名一个已经发布的公共API
1.2. 命名
▲1.2.1. (一级)包名以公司(或者组织)的根命名空间来命名
▲1.2.2. 使用一个稳定的产品名称或者一个产品系列的名称作为包的二级名称
▲1.2.3. 使用API名称作为包名的(三级名称)结尾
▲1.2.4. 考虑把仅包含实现的包的名称中包含”internal”这个词(注ÿ