sheet
| 首页架构 | 实现方式 |
|---|---|
| 分为不同模块 | 分层或者分模块去实现功能 |
包含类

STAR 原则解释
所谓STAR原则,即 Situation(情景)、Task(任务)、Action(行动)和Result(结果)四个英文单词的首字母组合。
首页例子
首页 v4 改版(对我来说就是重写), Situation 情景:
- 项目倒排,那时候说是端午之前要上线;
- 之前做首页的老哥走了,临危受命;
- 之前老哥代码难以维护只能重写;
- 首页是一个 APP 的门面,有点心慌;
task 分解:
- UI 框架搭建,使用的是 recyclerciew 多类型注册,这套架子可以轻松应对多类型,UI 框架容错,当对应的数据类型没有注册时使用 default 而不是崩溃;
- 接口与协议制定,因为首页模块众多,且应对可以自由搭配,需要设计一套灵活可变的接口与协议,最终选择参数中指定目前版本所支持 type 服务器按需下发,中间有小插曲(服务端老哥不认,私改协议),不过最终也妥善解决了,因为这个 delay 迫使我加班一天;
- 因为首页模块众多且互不相同,因此需要一套数据解析与转换框架,应对首页多变的模块和数据规则,最终抽象出 processor(驱动解析数据) transform(实际解析每一个项目数据) filter(拦截不支持不符合要求数据)reporter(脏数据或者解析异常数据上报),最终这套架子不仅发挥了它的稳定性,还为后来各种灵活扩展打下基础(中间服务器换人,接口有变化但是我只需要新增 processor 与 transform 即可)不伤筋动骨的去适配,大大提高适配效率。同时改结构也在海外版完全复用,该起来也很快;
- 手机 tablet 虽然 UI 样式差异比较大,但是基础的功能一样,抽象基础 fragment ,做共同功能;
- 抽象角色,分别有 data(核心模块)/ reporter(打点) / UI(基于架子)/ initiate(初始化模块,首页涉及功能太多这里统一调度)
action 动作:
- 按照轻重缓急去排期,优先做紧急且重要的模块,包括 UI 架子,数据模块;
- 画出类图与整体架构图,后期维护与扩展方便;
- 将 UI 部分以及如何使用这套 UI 架子外包给别人做,自己打样;
- 自己负责核心功能,做 90+% 工作,包括与外人对接(产品,数据,服务器),核心架构搭建与实现,数据架构搭建与实现,打点架构搭建与实现,初始化模块搭建与实现,UI 打样工作实现;
- 及时预知风险,明确任务难以如期完成就申请加班,争取按时按量交付。
- 应对应急,例如临时增加小需求(去掉中间 VIP tab ),临时解决别的模块问题(我的页面)
result 结果:
- 项目如期交付;
- bug 量明显少于 iOS 团队;
- 留存得到了较大提升;
- 拥有了一套优秀架构代码,增加了自己的代码实力与软实力。
首页脑图

首页数据模块
