从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:16 720

评论

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

MySQL性能优化(七):MySQL执行计划,真的很重要,来一起学习吧

xcbeyond

MySQL MySQL性能优化 执行计划

如何在 3 个小时内完成一周的工作

escray

Spring循环依赖及解决方式

张sir

Java spring 循环依赖

静态代码检查完成代码分析和SonarQuber的初探

陈磊@Criss

SaaS是「包治百病」的良药吗?

ToB行业头条

没错,用三方 Github 做授权登录就是这么简单!(OAuth2.0实战)

程序员内点事

GitHub oauth2.0 java;

JDK1.8新特性(一):JDK1.8究竟有哪些新特性呢

xcbeyond

jdk8 新特性

从一盏路灯,看亿万级联接的智能之路

华为云开发者社区

人工智能 物联网 智能设备 华为云

天元MegEngine深度学习框架贡献者计划全面启动!

flashrunrun

人工智能 AI 开源项目 深度学习框架

MySQL 三万字精华总结 + 面试100 问,和面试官扯皮绰绰有余(收藏系列)

海星

Java MySQL 面试

MySQL性能优化(六):常见优化SQL的技巧

xcbeyond

MySQL MySQL性能优化 SQL优化 优化技巧

MySQL 连接查询超全详解

X先生

MySQL 数据库

面试官:如何决定使用 HashMap 还是 TreeMap?

爱嘤嘤嘤斯坦

Java 算法 hashmap

MySQL性能优化(四):如何高效正确的使用索引

xcbeyond

MySQL 索引 MySQL性能优化

再强调一遍, 我为什么不建议大家接外包干私活?

非著名程序员

程序员 外包 提升认知 程序员成长 接私活

课程总结

Thrine

分布式存储系统doris

Thrine

为什么我们应该使用 Flutter?

环信

flutter

啃碎并发(11):内存模型之重排序

猿灯塔

现在微服务这么火,你还不了解吗?阿里P8推荐的微服务学习指南

互联网架构师小马

Docker 微服务 Spring Cloud Spring Boot dubbo

你与30W奖金只差一个 Apache Flink 极客挑战赛的报名

Apache Flink

flink

路过,凌晨2点的南京

小天同学

总结 思考 个人感悟 夜归人

博睿宏远获颁“2020开发与技术企业服务奖”

BonreeAPM

运维自动化 开发工具 博睿宏远

指数 | 2020年6月北京BGP机房网络质量评测报告

BonreeAPM

评测 博睿宏远 指数

HashMap学习总结

大刘

hashmap hash

腾讯的区块链为何败给了老干妈的“萝卜章”?

ToB行业头条

MySQL性能优化(五):为什么查询速度这么慢

xcbeyond

MySQL 查询优化 MySQL性能优化

案例解析丨金蝶K/3 Wise接入华为云RDS数据库SQL Server

华为云开发者社区

MySQL 数据库 Serverless 数据 华为云

开源数据交换(client)

李孟

Java 大数据 flink spark 数据交换

海南七星彩网站源码结算功能开发

网站,小程序,APP开发定制

未来的智慧城市:未来的城市生活愿景

网站,小程序,APP开发定制

众安黑客马拉松大赛总决赛-InfoQ小编探班

众安黑客马拉松大赛总决赛-InfoQ小编探班

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