App 分层思考

为什么要分层

主要是为了维持分工体系,提高生产效率。

为什么分层能提高生产效率

  • 需要理解的范围从实现转向接口(面向接口编程),减少思考复杂性
  • 减少依赖,加速打包
  • 快速合理的下沉通用代码,减少重复开发
  • 建立起合理的边界,权责分明,减少撕逼

常见层次

  • 业务层:通常是最上层,面向用户、面向产品开发的代码。如直播
  • SDK 层:有一定的专职业务,向业务层提供能力封装。如 push
  • 工具库:非常通用的逻辑,完全脱离当前App 环境。如 widget

如何界定层次

  • 通用性:
    最核心的一点就是通用性,这一坨代码(Android 上下文中的 module)到底有多少人在用。以什么样的形式在用。或者说抽象等级是什么样的。
    • 如果全世界的 App 开发都可以使用,那这些代码应该放到工具库。更直接的思路,这些代码是可以放到 github 上,无修改给各种人用,那么大概率是工具库代码。
    • 如果这些代码主要是减少重复开发(三方 push 接入)、减少专精人才的重复招聘(性能监控)。那大概率应该放到SDK 层。
    • 上述代码之外的代码,自然只能放到业务层。
  • 对外依赖:
    • 通常工具库是不能对其他库进行依赖的。因为,依赖是逆通用性的,过多的依赖会直接导致不通用。
    • 而 SDK 层是可以进一步依赖一些三方的库(接入),或者进一步在逻辑上依赖一些当前 App 或公司的技术理念或者需求(功能)。这些依赖削弱了通用性。
    • 最后业务层则可以依赖全部。并没有狭义上的通用性(无修改使用)。
  • 稳定性
    这里的稳定性是指代码变化的频次。通常来说,通用的代码在增删改的层面上,删改是极少的(向后兼容),增是可控的。
    • 工具库应该是极其稳定的,发版和修改应该是严格控制的。
    • SDK 层由于逻辑上依赖了技术需求,所以可能会有更高频次的修改限制,但是仍然是比较稳定的。
    • 业务层非常不稳定。
  • 权限和人员
    对于不同的通用性,开发者需要的技能水平和代码要求是不一样的。越靠下层的代码越需要更丰富的经验、更严格的设计和 cr 流程。

总结

层次通用性依赖稳定性权限
业务全部业务开发
SDK公司级仅基础三方库和基础工具库(注意非全部工具库)基本稳定平台中台开发
工具库所有人仅基础三方库基本无删改,仅新增平台开发
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值