曾在新加坡工作,负责面向东南亚及中东市场的直播类 App 开发。2020 年加入 B 站,负责 iOS 端流量相关业务,参与和主导了轻量化 Inline 框架的开发、搜索和首页业务的重构以及编译时依赖注入和启动编排框架 Gripper 的开发。
随着时间的累积,客户端代码的历史愈长,其脆弱和易出错的程度就愈发显著。每一次迭代都可能在代码的逻辑结构中增加新的维度,一旦这些维度超过人脑的处理极限,代码维护就会变成一种黑盒操作,其中输入与输出不再保持一致性,代码的成功执行变成了一种难以推理的偶然事件。在哔哩哔哩,我们希望通过探索和实践单向数据流,使开发过程聚焦于单一且有明确方向的维度。这不仅是对潜在问题的有效简化,更是一种面向未来的开发策略。
内容大纲
1. 背景介绍
1.1 编程迭代的必要性与挑战:探讨持续的代码迭代如何导致系统的脆弱和易错性,并说明为什么这是一个关键问题;
1.2 历史代码的复杂性问题:分析随时间累积代码,每轮迭代可能引入更多复杂性,致使维护成本上升。
2. 主要问题
2.1 代码实施的多样性:如何不同开发者采用不同的实现方法可能导致维护上的困难;
2.2 副作用的管理:说明功能实现过程中依赖的副作用如何隐藏潜在问题,并容易产生bug;
2.3 数据处理的安全性:探讨在追求开发速度时,可能采取的捷径和其对数据处理安全性的影响;
2.4 UI处理的不统一性:分析在多点修改UI可能引入的同步问题和线程安全问题。
3. 解决策略
3.1 采用函数式编程:借助函数式编程减少副作用,并提升代码的可预测性;
3.2 实施类REDUX的单向数据流:通过类REDUX框架来管理状态,确保数据流的一致性和可追踪性;
3.3 促进单元测试的可行性:说明如何通过上述策略简化单元测试过程,增强代码质量。
4. 展望未来
4.1 数据与UI的分离:讨论数据与UI分离的趋势如何为声明式UI的未来做好准备;
4.2 符合Kotlin Multiplatform (KMP)的设计哲学:探索如何通过KMP设计哲学促成跨平台代码的共享与一致性。
听众收益
1. 以 B 站为镜,探索自己客户端开发中的问题,并借鉴 B 的思路来解决;
2. 了解单向数据绑定的思想和实践方案,为自己的实践建立基础。