写点什么

从 Observer 到 Observable:使用 Functional Swift 提升复杂 iOS 项目的可维护性

2019 年 8 月 24 日

从Observer到Observable:使用Functional Swift提升复杂iOS项目的可维护性

QCon北京2018大会上,王文槿讲师做了《从 Observer 到 Observable:使用 Functional Swift 提升复杂 iOS 项目的可维护性》主题演讲,主要内容如下。


演讲简介


iOS 发展已经超过十年的时间,已经成长成为一个成熟的软件平台。这意味着绝大多数的 iOS 项目的迭代时间已经超过了 3 年,伴随着的不断膨胀的代码,还有各种各样的历史包袱。最严重就是大量的状态、中间层导致迭代新功能所需要的成本越来越高。


本次分享会结合 Swift 的函数式特性以及 FRP 的思想,尝试对传统的观察者模式(Listener/Delegate/Callback)和状态机(State Machine)进行改进,来实现更好的状态管理,更可控的回调时序以及更安全、鲁棒的编程模式,解放程序员在维护大型复杂项目的心智负担。


听众受益

  • Swift 的函数式特性以及函数响应式编程思想;

  • 使用响应式的 Signal 来建模事件(Event)和状态(State);

  • 将可变数据(mutable data)/异步任务/IO 网络封装为 immutable 的结构,使得程序可以通过可组合性(compositional)来显著降低其复杂性,提升安全性;

  • 如何将上述工作在现有项目中低成本、渐进式应用;

  • 尝试声明式的思考问题:想要做什么,而不是该怎么做。


讲师介绍


王文槿


阿里 UC 事业群 无线开发专家


我目前是一名在 UC 工作的 iOS 开发者。曾经创业过一段时间,期间主要 Swift 来构建快速移动应用,以及使用 Python 后端全家桶(redis、mongodb、zmq 等)来构建一系列 app 的后台服务。进入 UC 之后先后负责夸克浏览器的开发,Weex 适配的工作,目前主要负责短视频业务,其中主要包括视频拍摄,OpenGL/Shader,视频编解码之类的工作。


喜欢 Swift 语言的各种先进特性,2 年前加入 SwiftGG 后一直致力于 Swift 语言的布道和最佳实践的讨论。其中对利用 Swift 的函数式特性改进工程实践的方面研究较多,去年的第二届 atSwift 大会上也分享了如何通过设计一套简单的 reactive api 来让 mvvm 写起来更舒服,Swift 社区大多数都叫我“莲叔”。主要当时在翻译组里,我的昵称叫小莲 :-D。












完整演讲 PPT 下载链接


https://qcon.infoq.cn/2018/beijing/schedule


2019 年 8 月 24 日 17:16818

评论

发布
暂无评论
发现更多内容

1.2W 字的 SQL 语法速成手册

xcbeyond

MySQL sql 3月日更

Google面试题-怎样实现拼写纠错的功能?

Nick

数据结构 二分查找 数据结构与算法

通用中间件模型

型火🔥

架构 分布式 抽象 中间件 模型

【办公自动化--加餐】打开Excel后首先应该进行的7个操作

Tango

办公自动化 3月日更 IT蜗壳教学

容器引擎学习笔记

lenka

3月日更

给你的网站文字添加黑幕-隐藏文字

依旧廖凯

28天挑战 3月日更

ARST-日常打卡

pjw

产品0期 - 完整的产品文档(大作业)

曾烧麦

产品训练营

寻找被遗忘的勇气(十四)

Changing Lin

3月日更

Docker 教程(二):Dockerfile

看山

Docker Dockerfile

算法攻关-序列化和反序列化二叉树O(n)_offer37

小诚信驿站

刘晓成 小诚信驿站 28天写作 算法攻关 序列化二叉树

翻译:《实用的Python编程》06_00_Overview

codists

Python

归并排序与快速排序以及PHP实现

一个大红包

3月日更

大作业-附件4

曾烧麦

产品训练营

mybatis 配置详解

xiezhr

mybatis MyBatis标签 mybatis配置

大作业-附件3

曾烧麦

产品训练营

IBM们的中国研究院是怎样一步步“躺平”的?

脑极体

作业 - 知识星球 - 新手引导

hao hao

区块链打造医疗平台,提供医疗纵深服务(上)

茜茜公主

3月日更

【LeetCode】设计哈希映射Java题解

HQ数字卡

算法 LeetCode 28天写作 3月日更

大作业-附件1

曾烧麦

产品训练营

大作业-附件2

曾烧麦

产品训练营

架构师训练营-Web 攻击与防护

引花眠

架构师训练营 4 期

产品经理训练营大作业(05)

KingSwim

类似GitBook的在线文档创作平台

happlyfox

28天写作 3月日更

开发人员的软实力之一:配合度

boshi

职业素养 七日更

别再问我们用什么画图的了!问就是excalidraw

Kevin Wan

微服务架构 工具软件 go-zero 画架构图

大作业-附件5

曾烧麦

产品训练营

源码分析-Netty: 并发编程的实践(二)

程序员架构进阶

源码分析 Netty 多线程高并发 28天写作 3月日更

JDK动态代理的实现机制

xzy

Java 动态代理 原理分析

架构师训练营 4 期 第11周

引花眠

架构师训练营 4 期

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

从Observer到Observable:使用Functional Swift提升复杂iOS项目的可维护性-InfoQ