从知乎 iphone 端重构说开去:web 为主的复杂社交产品的 ios...
DESCRIPTION
应用重构:《从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践》| 知乎 耿健桓 | iOS DevCamp 议题简介:当为知乎等以 Web 为主的复杂社交产品开发 iOS 端时,我们在开发上总会面临的一个棘手的矛盾,即迭代速度以及原生体验间的取舍。本次演讲将以知乎 iPhone 端从 1.0 到 2.0 的重构过程为例,讲解为复杂社交网络产品开发 iOS 端时,用于解决开发迭代速度及原生体验间矛盾的策略及实践。 个人简介:耿健桓,知乎 iOS Tech Leader。独立完成了知乎 iPhone 端 1.0 的开发,并带领团队完成了知乎 iPhone 端从 1.0 到 2.0 的重构。TRANSCRIPT
![Page 1: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践](https://reader034.vdocuments.mx/reader034/viewer/2022050713/55996cc01a28ab64368b4597/html5/thumbnails/1.jpg)
iOS DevCampJuly 27
Produced by CSDN
Website: http://devcamp.csdn.net/Weibo: http://weibo.com/cmdnclub/
Friday, August 3, 12
![Page 2: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践](https://reader034.vdocuments.mx/reader034/viewer/2022050713/55996cc01a28ab64368b4597/html5/thumbnails/2.jpg)
Web 为主的复杂社交产品的 iOS 端开发策略及实践
耿健桓知乎 iOS Tech Lead
Friday, August 3, 12
![Page 3: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践](https://reader034.vdocuments.mx/reader034/viewer/2022050713/55996cc01a28ab64368b4597/html5/thumbnails/3.jpg)
问题
Friday, August 3, 12
![Page 4: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践](https://reader034.vdocuments.mx/reader034/viewer/2022050713/55996cc01a28ab64368b4597/html5/thumbnails/4.jpg)
知乎1.0 面临的问题
• 迭代开发速度慢• 逻辑层次不清晰,代码耦合严重
Friday, August 3, 12
![Page 5: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践](https://reader034.vdocuments.mx/reader034/viewer/2022050713/55996cc01a28ab64368b4597/html5/thumbnails/5.jpg)
重构
Friday, August 3, 12
![Page 6: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践](https://reader034.vdocuments.mx/reader034/viewer/2022050713/55996cc01a28ab64368b4597/html5/thumbnails/6.jpg)
特点
• Web 为主
• 复杂社交产品• iOS 端
Friday, August 3, 12
![Page 7: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践](https://reader034.vdocuments.mx/reader034/viewer/2022050713/55996cc01a28ab64368b4597/html5/thumbnails/7.jpg)
Web 为主
• 产品、视觉、交互设计等以 Web 为主
• 首先用 Web 技术实现
Friday, August 3, 12
![Page 8: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践](https://reader034.vdocuments.mx/reader034/viewer/2022050713/55996cc01a28ab64368b4597/html5/thumbnails/8.jpg)
复杂社交产品
• 对象复杂多样• 对象间的关系复杂多样
Friday, August 3, 12
![Page 9: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践](https://reader034.vdocuments.mx/reader034/viewer/2022050713/55996cc01a28ab64368b4597/html5/thumbnails/9.jpg)
iOS 端
• 原生性• 体验• 技术
Friday, August 3, 12
![Page 10: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践](https://reader034.vdocuments.mx/reader034/viewer/2022050713/55996cc01a28ab64368b4597/html5/thumbnails/10.jpg)
矛盾
Friday, August 3, 12
![Page 11: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践](https://reader034.vdocuments.mx/reader034/viewer/2022050713/55996cc01a28ab64368b4597/html5/thumbnails/11.jpg)
矛盾
• 与 Web 相同的迭代速度
• iOS 原生体验
Friday, August 3, 12
![Page 12: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践](https://reader034.vdocuments.mx/reader034/viewer/2022050713/55996cc01a28ab64368b4597/html5/thumbnails/12.jpg)
Shell App?
Friday, August 3, 12
![Page 13: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践](https://reader034.vdocuments.mx/reader034/viewer/2022050713/55996cc01a28ab64368b4597/html5/thumbnails/13.jpg)
Shell App 的优势
• 应用不需要发布新版本就可以让用户享用新功能
• ⼀一旦实现了新特性,可以跨平台分发• 如果工程师有 Web 开发经验,可以面对熟悉的 Tech Stack
Friday, August 3, 12
![Page 14: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践](https://reader034.vdocuments.mx/reader034/viewer/2022050713/55996cc01a28ab64368b4597/html5/thumbnails/14.jpg)
Shell App 的劣势
• 框架不是免费的• 体验的不⼀一致性• 性能
Friday, August 3, 12
![Page 15: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践](https://reader034.vdocuments.mx/reader034/viewer/2022050713/55996cc01a28ab64368b4597/html5/thumbnails/15.jpg)
So what?
Friday, August 3, 12
![Page 16: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践](https://reader034.vdocuments.mx/reader034/viewer/2022050713/55996cc01a28ab64368b4597/html5/thumbnails/16.jpg)
可以融通的设计思想
• MVC
• RESTful
• Stateless
Friday, August 3, 12
![Page 17: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践](https://reader034.vdocuments.mx/reader034/viewer/2022050713/55996cc01a28ab64368b4597/html5/thumbnails/17.jpg)
实践
• 剥离视图之间的跳转逻辑• 用 RESTful 定义 Web API 并用原生技术在应用里实现相应的 Model
• 松散耦合指导 UI 类库开发
Friday, August 3, 12
![Page 18: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践](https://reader034.vdocuments.mx/reader034/viewer/2022050713/55996cc01a28ab64368b4597/html5/thumbnails/18.jpg)
剥离视图之间的跳转逻辑
• Storyboard
• 自行实现
Friday, August 3, 12
![Page 19: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践](https://reader034.vdocuments.mx/reader034/viewer/2022050713/55996cc01a28ab64368b4597/html5/thumbnails/19.jpg)
RESTful API
• 对象• 集合• 服务
Friday, August 3, 12
![Page 20: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践](https://reader034.vdocuments.mx/reader034/viewer/2022050713/55996cc01a28ab64368b4597/html5/thumbnails/20.jpg)
松散耦指导 UI 类库开发
• 拆分 UITableViewController 的 delegate 和 dataSource
• 复合控制器
Friday, August 3, 12
![Page 21: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践](https://reader034.vdocuments.mx/reader034/viewer/2022050713/55996cc01a28ab64368b4597/html5/thumbnails/21.jpg)
复合控制器
•ZHObjectPickerController
•UINavigationController
•ZHSearchDisplayController
•ZHPickerListViewController : ZHSearchResultListViewController
Friday, August 3, 12
![Page 22: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践](https://reader034.vdocuments.mx/reader034/viewer/2022050713/55996cc01a28ab64368b4597/html5/thumbnails/22.jpg)
银弹
Friday, August 3, 12
![Page 23: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践](https://reader034.vdocuments.mx/reader034/viewer/2022050713/55996cc01a28ab64368b4597/html5/thumbnails/23.jpg)
银弹没有
Friday, August 3, 12