24
iOS DevCamp July 27 Produced by CSDN Website: http://devcamp.csdn.net / Weibo: http://weibo.com/cmdnclub/ Friday, August 3, 12

从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践

Embed Size (px)

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 的重构。

Citation preview

Page 1: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践

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 端开发策略及实践

Web 为主的复杂社交产品的 iOS 端开发策略及实践

耿健桓知乎 iOS Tech Lead

Friday, August 3, 12

Page 3: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践

问题

Friday, August 3, 12

Page 4: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践

知乎1.0 面临的问题

• 迭代开发速度慢• 逻辑层次不清晰,代码耦合严重

Friday, August 3, 12

Page 5: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践

重构

Friday, August 3, 12

Page 6: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践

特点

• Web 为主

• 复杂社交产品• iOS 端

Friday, August 3, 12

Page 7: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践

Web 为主

• 产品、视觉、交互设计等以 Web 为主

• 首先用 Web 技术实现

Friday, August 3, 12

Page 8: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践

复杂社交产品

• 对象复杂多样• 对象间的关系复杂多样

Friday, August 3, 12

Page 9: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践

iOS 端

• 原生性• 体验• 技术

Friday, August 3, 12

Page 10: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践

矛盾

Friday, August 3, 12

Page 11: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践

矛盾

• 与 Web 相同的迭代速度

• iOS 原生体验

Friday, August 3, 12

Page 12: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践

Shell App?

Friday, August 3, 12

Page 13: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践

Shell App 的优势

• 应用不需要发布新版本就可以让用户享用新功能

• ⼀一旦实现了新特性,可以跨平台分发• 如果工程师有 Web 开发经验,可以面对熟悉的 Tech Stack

Friday, August 3, 12

Page 14: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践

Shell App 的劣势

• 框架不是免费的• 体验的不⼀一致性• 性能

Friday, August 3, 12

Page 15: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践

So what?

Friday, August 3, 12

Page 16: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践

可以融通的设计思想

• MVC

• RESTful

• Stateless

Friday, August 3, 12

Page 17: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践

实践

• 剥离视图之间的跳转逻辑• 用 RESTful 定义 Web API 并用原生技术在应用里实现相应的 Model

• 松散耦合指导 UI 类库开发

Friday, August 3, 12

Page 18: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践

剥离视图之间的跳转逻辑

• Storyboard

• 自行实现

Friday, August 3, 12

Page 19: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践

RESTful API

• 对象• 集合• 服务

Friday, August 3, 12

Page 20: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践

松散耦指导 UI 类库开发

• 拆分 UITableViewController 的 delegate 和 dataSource

• 复合控制器

Friday, August 3, 12

Page 21: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践

复合控制器

•ZHObjectPickerController

•UINavigationController

•ZHSearchDisplayController

•ZHPickerListViewController : ZHSearchResultListViewController

Friday, August 3, 12

Page 22: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践

银弹

Friday, August 3, 12

Page 23: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践

银弹没有

Friday, August 3, 12

Page 24: 从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践

谢谢!

zhi.hu/[email protected]@dismory

Friday, August 3, 12