本文为 DevLink 专访系列,本期采访嘉宾是 iDev 苹果开发者大会 iOS 应用架构组件化的讲师——璩介业。在即将到来的 iDev 大会上,他将和大家分享组件化的一些概念,和项目组件化过程中遇到的问题、解决办法。
由 DevLink 主办的 iDev 苹果开发者大会 将于 2016 年 11 月 5 日~6 日在北京国际会议中心举行,目前正在火热购票中,多人团购更有限时优惠。
以下为采访内容,提问者: DevLink ,受访者:璩介业。
1 、璩老师您好,能否简单的介绍一下你自己?
毕业于南京东南大学,毕业后去了上海,在华硕和飞利浦半导体工作了一段时间,那时候主要从事底层驱动和嵌入式系统的开发; 08 年的时候因为一首《北京欢迎您》来了北京,来北京后一直在中国移动的飞信团队,经历了飞信的起步、辉煌以及最后的平淡;后来去了有缘网,担任手机端 iOS 开发的技术经理;再后来去了链家集团下面的丁丁租房,担任整个客端的负责人和手机端架构师;现在在链家网负责整个移动端 iOS 底层架构组。
回顾这么多年的工作经历,基本上都是在从事开发相关的工作,从事过很多平台的开发: NXP 、 MTK 、 Windows Mobile 、 Symbian 、 iOS ;参与并主导过很多项目的开发和重构工作:飞信 Symbian 3.0 客户端、有缘网 iOS 客户端、丁丁租房 iOS 客户端等。对复杂业务下的移动端 App 架构设计和研发效率提升有浓厚兴趣。
目前正在和小伙伴们一起进行掌上链家的组件化工作。
2 、您这次分享的主题是关于 iOS 组件化开发的,能否跟大家“剧透”一下要讲些什么?
主要想结合这次掌上链家的实战经历,和大家分享下组件化的一些概念和项目组件化过程中遇到的问题以及解决办法。
如果抛开具体的项目单纯的讲组件化,可能会比较抽象,因此我会结合我们掌上链家这个项目来一步步展开和讨论什么才是适合自己项目( App )的组件化架构。这种理论和实践相结合的方式可能会比较接地气,也比较容易理解。
3 、很多开发者认为,组件化开发虽然可以让功能模块之间的耦合度降低,有利于在大型应用开发中快速迭代,但小的项目就没有必要这样去做了,对这样的观点,您怎么看?
组件化的一个大前提是:当你的项目已经趋于稳定,并且大的产品方向和定位已经清晰,不会再发生变化,这个时候才会考虑组件化。
如果你的项目是个创业项目,产品还处于起步和摸索的阶段,各个业务模块还不稳定,需求也总是在变,那么没必要考虑组件化,使用传统的开发模式:例如 MVC ,更合适。
因此衡量是否需要组件化的标准不应该是项目的大小,而应该是项目是否已经趋于稳定,产品方向和定位是否已经明确。
如果非要以大小量化的来衡量,以我的经验: 5W 行代码量级的 App 没必要采用组件化; 5W 以上的 App 就可以考虑组件化的事了; 10W 行以上,那么使用组件化一定能提高你的开发效率,加速你的迭代。
4 、在您看来,组件化开发的实施难点在哪里?
组件化的难点并不在技术的选型上,采用哪一种技术方案都能达到组件化的目的。和所有的重构一样,对现有项目组件化重构的难点和痛点是:如何把旧有的业务逻辑按照纵向切分,去除业务模块之间的依赖和继承关系?以及如何说服产品经理同意并支持你在现有的版本基础上进行组件化的重构。
5 、对于产品已经上线,但没有实施过组件化拆分的公司或产品,您有哪些建议?
首先搞定你的产品经理,告诉他这是一件功在当代,利在千秋的事。牺牲一两个版本的迭代,换来以后大家一起轻松和打 LOL 的时间,何乐而不为?
其次先从最基础的组件开始,一个一个的进行抽离,局部进行重构,先定个一个亿的小目标 >_< 千万不要试图一开始就推倒重来,这样绝对讨不了好。
6 、作为链家网的 iOS 工程师,能否介绍一下链家现在的技术体系和移动端产品的开发模式?
链家技术这边主要按照端来划分,有后端( server ),前端( H5 & M 站),大数据分析,移动端等多个研发团队。
移动端这边按照业务线来分有:新房、二手房、旅居、 IM 、经纪人、 API 、底层架构组等;按照具体的产品来分有:掌上链家、上海链家、经纪人 Link 等;
移动端这边是采用小团队并行开发、快速迭代的敏捷开发模式。这种开发模式比较适合业务和产品方向已经相对稳定的产品。
7 、对身处苹果生态链的一线开发者有什么要说的么?
如果想一直走技术序列的话,那么踏踏实实写好每一行代码,多尝试新的技术,拥抱变化,不断做出改变!永远记住:我们是产品的创造者,不是代码的搬运工!
本篇文章仅代表嘉宾个人观点
大会的详细信息请见: http://idev2016.devlink.cn/