专访百度资深工程师孙源:代码强迫症的死实践派



专访百度资深工程师孙源:代码强迫症的死实践派

发表于 2015-10-09 10:50| 4663次阅读| 来源 CSDN| 4 条评论| 作者 唐小引
width="22" height="16" src="http://hits.sinajs.cn/A1/weiboshare.html?url=http%3A%2F%2Fwww.csdn.net%2Farticle%2F2015-10-08%2F2825853-mdcc-interview-sunny&type=3&count=&appkey=&title=MDCC%202015%E7%A7%BB%E5%8A%A8%E5%BC%80%E5%8F%91%E8%80%85%E5%A4%A7%E4%BC%9A%E5%8F%AC%E5%BC%80%E5%9C%A8%E5%8D%B3%EF%BC%8CCSDN%E4%B8%93%E8%AE%BF%E7%99%BE%E5%BA%A6%E8%B5%84%E6%B7%B1%E5%B7%A5%E7%A8%8B%E5%B8%88%E5%AD%99%E6%BA%90%EF%BC%8C%E8%AF%B7%E4%BB%96%E5%88%86%E4%BA%AB%E4%BA%86%E8%87%AA%E5%B7%B1%E6%8B%A5%E6%9C%89%E4%BB%A3%E7%A0%81%E5%BC%BA%E8%BF%AB%E7%97%87%E5%92%8C%E5%AE%8C%E7%BE%8E%E4%B8%BB%E4%B9%89%E5%A6%84%E6%83%B3%E7%97%87%E7%9A%84%E6%AD%BB%E5%AE%9E%E8%B7%B5%E6%B4%BEstyle%EF%BC%8C%E5%AF%B9%E4%BA%8EiOS%E5%BC%80%E5%8F%91%E6%8A%80%E6%9C%AF%E4%B8%8E%E5%BC%80%E6%BA%90%E7%9A%84%E6%8E%A2%E7%A9%B6%E5%BF%83%E5%BE%97%EF%BC%8C%E4%BB%A5%E5%8F%8A%E5%A6%82%E4%BD%95%E6%88%90%E4%B8%BA%E4%B8%80%E4%B8%AA%E9%9D%A0%E8%B0%B1%E7%9A%84iOS%E7%A8%8B%E5%BA%8F%E5%91%98%E3%80%82&pic=&ralateUid=&language=zh_cn&rnd=1444481052808" frameborder="0" scrolling="no" allowtransparency="true"> 摘要:MDCC 2015移动开发者大会召开在即,CSDN专访百度资深工程师孙源,请他分享了自己拥有代码强迫症和完美主义妄想症的死实践派style,对于iOS开发技术与开源的探究心得,以及如何成为一个靠谱的iOS程序员。

孙源(@我就叫Sunny怎么了),资深iOS开发工程师,现就职于百度。写博客、玩开源,视代码为颜值,待节操为路人。在技术之路上坚持刨根问底、探索最佳实践,热爱写作和分享,曾组织过Runtime、RunLoop线下专题分享会,维护forkingdog开源小组。

MDCC 2015移动开发者大会召开在即之时,笔者专访了这位特立独行,以一只“逗比狗狗”形象横行江湖的90后非主流iOS程序猿,请他分享了自己拥有代码强迫症和完美主义妄想症的死实践派style,对于iOS开发技术与开源的探究心得,以及如何成为一个靠谱的iOS程序员。

值得一提的是,在10月14日-16日举行的MDCC 2015移动开发者大会上,孙源将在平台与技术iOS专场带来《Interface Builder快速开发实践和开源》的主题分享,欢迎前来现场聆听,直面逗比大神。猛戳>>立即抢票


图:百度资深工程师 孙源

CSDN:首先,请对您的团队日常工作与风格进行介绍。

孙源:我们是个小而精的团队,刚刚才重新凑足了 4 个人,日常工作和各位 App 开发者也没有什么不同。我非常有幸在这个团队高效、搞笑地工作,我们有着以下几个共同的特性:

  1. 对技术的执着和单纯。平时最大的消耗品就是白板笔,解决一个蛋疼的 Bug,商量一个靠谱的架构,提出一个脑洞大开的蛋疼问题或是花几个小时时间来纠结一个类名该用哪个单词,我们喜欢凑在小白板边上乱涂乱画。碰到大家都不懂的技术点时很兴奋,就算下班研究到凌晨也得弄明白,然后开心地说:“恩不错,今天没白来~”。
  2. 死务实派,死实践派。对很华丽但“没卵用”的技术不太感冒,在简单且稳定的技术中寻求创新,在日常开发中摸索最佳实践,拒绝纸上谈兵,You can you up,写个 Demo 立见分晓。
  3. 代码强迫症与完美主义妄想症;宁可多花一个小时来调整结构也不想花一分钟 Copy / Paste 了事;看到乱七八糟的代码心情会不美丽;能在十秒钟内发现一屏代码中的风格问题。
  4. 懒。不愿意重复工作,不愿意加班,我们致力于探索效率最高的方案,坑都踩完了,工具都写好了,就能去享受一劳永逸的爽快。

CSDN:您目前最关注哪些技术领域,正在深度研究的是?

孙源:我对技术的探究大多基于日常开发中遇到的问题,目前除了玩 Swift 外,比较大的精力放在 UI 开发的研究上,因为它可以让我们在日常业务开发中的效率大幅度提高,比如最近我们 Team 搞的 FDStackView,旨在将十分好用的 UIStackView 的最低支持版本从 iOS 9 降级到大家都能接受的 iOS 6,它需要非常细致的观察、class dump 以及猜想系统的实现、每一条约束的连法,排布的规则等来实现一个等效类,并完美向上兼容,就好像 UIStackView 从 iOS 6 开始就出现了一样。Stack View 的出现弥补了 Auto Layout 对于开发复杂流式布局十分繁琐的缺陷,让“连约束”的过程慢慢弱化,很大提升了开发效率。这次 MDCC 上我将对这块进行简单的 Demo 说明。


图:FDStackView Demo

CSDN:在工作中,你的强迫症具体体现在哪儿?

孙源:我经常说,起个好名字是成功的一半,一个完美贴切的类名可以让后面的实现变得异常顺利,花上一两个小时集体讨论一个模块中的类名是常有的事;接下来要设计一个好看的方法名,随手翻开一个字典看看单词拼写是否有问题,仔细琢磨每一个介词出现得是否妥当等;属性和变量名也一定要完整描述上下文关系,让人读起代码来在瞥一眼之后就大概知道是在干嘛。

另外就是各种细节风格强迫症,空格数量、空行个数、括号位置、#import顺序,甚至 Interface Builder 里摆放控件的名称等。

还有就是一些完美主义的妄想症,宁可挤出来一个小时做个小重构,也不愿意花一分钟 Copy / Paste 了事;扫一屏幕的代码能在几秒内看出其中存在的风格问题;对于历史混乱的坑代码,要么就不碰,一碰就忍不住想把所有风格都掰正,要么就干脆重写,当然得是在时间允许的情况下。我相信一个愿意花时间审视自己的代码、追求完美的强迫症,在业务逻辑上的缜密程度也是有保证的,所以可能处女座比较适合我的 Team。

CSDN:2015年,Swift成为iOS开发的热门所在,为何你依然坚持奋战在Objective一线?

孙源:2015 年开始,Swift 开始渐渐取代 Objective-C,这是毋庸置疑的,在工作上没有立刻切到 Swift 也是受制于一些客观原因,比如将 Swift 运行时库打入包内将增加若干 M 大小,App 大小我们内部也是个考核指标的;Swift 语法和其配套库暂处于一个不太稳定的状态,第三方依赖库也是有点参差不齐;另外,对于团队稳定性来说,招一个精通 Objective-C 的同事还是比精通 Swift 的要多些,学习成本也需要考虑;当然,说这么多都不如这一条:用 Xcode 来写 Swift 一天可以砸无数次键盘。

当然,我们也在积极的迎接 Swift 时代的到来,没事的时候搞搞纯 Swift 的 Side Project 练练手,踩踩坑什么的。个人预计在经过今年这么大折腾之后, 2016 年 Swift 将更加占据主流,成为大家居家旅行、跳槽面试的必备技能。

CSDN:如何看使用 Interface Builder 来搭建 UI?

孙源:我和我的团队是 IB 重度使用者,来到这个项目前,几乎所有的页面都由纯代码和 frame 布局构建,花了近一年时间,我们慢慢切换到了 IB + Auto Layout 上,可以说收益很大,首先是多屏幕尺寸问题得以解决,这是 Auto Layout 的功劳;其次代码行数有明显的下降,平均一个模块可以减少约 40% 的代码量(IB 不算代码时),开发速度有一半以上的提升,一个熟手可以在几分钟内在 IB 中摆好一个较为复杂 cell 的视图和其约束,而且更为关键的是所见即所得的优势,让修改和维护成本降低很多,甚至视觉的同学都可以独立完成一些如调整间距、大小的小调整;iOS 9 UIStackView 的出现让最繁琐的连接约束的过程都简化了,简直不能再酷炫。

是否使用 Interface Builder 来开发 UI 一直是 iOS 程序猿们有分歧的点,反对的观点大概集中于大型团队维护困难、遇到冲突不好解决、内存占用、效率和感觉不 “geek” 上。这次 MDCC 上我将会就这几点深入谈谈自己的观点。

CSDN:在开源的路上,你遇到过哪些问题?有什么想分享的心路感受?

孙源:在玩开源之后发现它并不是看上去那样的容易搞定:首先必须有能力实现这个项目,把它做出来并真的能解决开发中的问题;接下来源码的文档注释要齐全,起码 API 让人读头文件就能知道咋用,这还是非常考验英语能力的,我英语一般,憋半天也不知道该怎么表达心中的意思;让其他开发者使用时,最基本的 GitHub README 需要写好,让人一看就知道这个开源工程是做什么的,怎么用,要注意什么;配套的 Demo 是极其重要的工作,当别人看完 overview 感兴趣后,一般都会下个 Demo 玩玩,所以也需要很认真地设计它,来展现开源工具的应用场景。

此外,release 的管理也是比较头疼,我现在用 Cocoapods 做发布,每个版本的更新内容,各处的版本号对应修改,打 tag,走 pod 的 release 流程等;然后就是处理大家贡献的 issue、pr 等,因为开源毕竟是工作之余干的事,精力投入的有限,很难及时处理,在此还是希望大家多多理解包容。总之,开源这个过程要付出的精力比写出那些代码本身要多得多,同样,收获也很多。

CSDN:如何成为一个靠谱的iOS程序员?

孙源:是否靠谱取决于是否和要应聘的职位 match,但从我个人来看,我希望和具有下面几个特性的人共事:对技术具有很强烈的渴望和执着,有对问题刨根问底的精神,对听闻的结论持怀疑态度,以实践为重,技术的深入源于实际业务,通晓之后也要反过来总结最佳实践,让今后的业务开发更为通畅;技术靠谱更要人靠谱,小到自己写的每一行代码,大到每一个功能,都需要对它负责,像艺术作品一样希望它能够做到完美,这也是为什么我面试候选人的时候对代码风格看的那么重。

CSDN:在今年的MDCC大会上,计划与开发者们分享什么?

孙源:分享下个人对 Interface Builder 的看法,如何用 IB 高效的开发日常的需求,以 Demo 演示一下我们究竟可以多迅速地利用 IB 简单搭一个微信出来,同时穿插一些我们团队开源组件的介绍和维护开源的感受。希望能在最短的时间内多讲些干货,对得起不便宜的门票,也希望能让我们一线开发者在今后的 UI 开发中多些效率,少浪费些时间。

CSDN:你最期待在MDCC 2015上看到哪些内容?收获什么?

孙源:希望在 MDCC 上能看到各厂各大牛的研究内容,它能反映今后 iOS 开发的趋势所在,让我们不至于掉队。个人对 iOS 底层和安全方面的 Topic 也比较感兴趣,非常开心能受邀参加此次大会,希望能收获更多广度的知识和结识更多朋友。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值