Android包目录的命名规范会直接影响到整个APP攻城后期的开发效率和拓展性。
常用两种命名方式:PBL(package by layer ) 和PBF(pakcage by Feature)
layer 英/ˈleɪə(r)/ 翻译:层
feature 英/ˈfiːtʃə(r)/ 翻译:特色
1 Package By Layer
层命名:
即 activity层下全是XXActivity,比如LoginActivity、RegisterActivity、AboutAsActivity
fragment层下全是XXFragment,比如IMFragment、FriendsFragment、MyFragment
bean层下全是XXBean,比如UserBean、EmailBean、BookBean
utils层下全是XXUtils,比如LogUtils、SPUtils、CameraUtils、ScanUtils
view层下全是自定义view,比如FlowLayout、PhotoView、SubsimpleScrollImageView
特点:
项目结构一目了然,上手快
适合开发人员不多、项目结构简单、后期变动不大的项目
缺点:
低内聚,同一目录包含了多个功能模块,比如activity里有登录、注册、设置还有主界面、扫码、拍照、修改个人信息等,界面之间没有很强的关联性,却被放置在一块,导致聚合性降低。
影响开发效率。比如主界面MainActivity引用了fragment,需要去fragment层下找对应的fragment类来开发,目录切换会影响开发效率。后期模块增多,命名众多的情况下,查找会消耗一定的时间,降低开发效率。
2 Package By Feature
特色命名:
即按照功能划分包目录。以功能模块名称作为目录名,所有与这个功能模块相关的开发都在这个目录内。
比如login目录下,是登录模块。登录模块里分Activity层,比如LoginActivity,RegisterActivity、SplashActivity、GuideActivity,登录模块中fragment层里放GuideFragment等
除了业务相关放一块,如utils这样的通用模块,也可根据业务相关方在对应的分包目录下方便查找和使用。
特点:
高内聚,低耦合。以map为例,包含了fragment、adapter等。目录之间没有很强的关联性,此模块的功能只需要在对应的包目录下进行开发,出基础类以外,一般不需要一如其他包的类。
便于团队开发管理,提升问题排查效果,方便后期其他开发人员接盘。重要的是后期方便转组件化。