我做 iOS 开发也有好多年了,目前也还在写代码。我自己是 OC 为主,用 Swift 开发过一些页面,但是用的少。聊聊我的个人看法,欢迎交流讨论。
先说我个人的结论:
不使用 Swift,要么是开发者在这块经验较少,要么是所参与项目中不适合使用,这项技能也就弱化了。
下面从项目、团队(个人)以及语言的稳定性方便分析下。
项目
新项目:
新的项目没有“历史”负担,如果是有 Swift 开发经验的个人或者团队,一般会考虑使用新语言开发。但也不是一拍脑袋就用的,也要综合评估。看项目的体量、核心组件库支持情况、团队成员经验等。
老项目:
因为老项目基本都是 OC 开发的,有些项目随着时间已经迭代 N 多版本了,项目变的错综复杂、庞大,牵一发而动全身的感觉,这种项目在版本迭代、维护还是会以 OC 为主。
混合开发:
目前有不少公司、团队在这样做。我之前所在公司也这样。
比如核心的页面、功能使用 OC,一些不重要的页面会用 Swift 开发,让团队开发人员学习使用,提高大家的实战经验。这个更多的是从技术角度考虑的。
当然这个也和上面的老项目类似,要评估后才会做决策是否使用新语言。
项目兼容性:
有些项目中,会引用较多的第三方开源库或者核心库也是用第三方的,那么要看这些开源库是否支持 Swift,有些老的开源库(只有 OC 版本)但是刚好是你需要的,你要考虑。
团队
要考虑开发团队是否都有 Swift 经验或者有核心开发人员有较为丰富的开发经验。
如果团队成员缺少新语言经验,在项目开发时,考虑项目的计划、风险,一般都会选择更“稳妥” OC 开发语言。
有些不错的以技术为核心的公司团队,会组织开发者学习新语言,也会适当的在项目中使用。提高团队的“战斗力”。
个人
近几年的新入行开发者中,学习和使用 Swift 的已经多起来了。因为是从 0 基础学习的,基本会选择 Swift 语言。
还有就是苹果官方也在推荐使用 Swift,从学习资料、开发工具都在支持,所以对新入行开发者影响较大。
而那些老 iOS 开发者,还是以 OC 为主,因为 OC 经验更多,同时也在学习和尝试 Swift,但在某些情况下还是会优先选择 OC,但也有做混合开发的。这个要看具体的项目、计划等,进行综合评估。
语言的稳定性
Swift 毕竟是一个新语言,虽然经过了这么多年的迭代,但也是处于变化阶段,而且每次大版本都会有较大的变化,这个在开发以及维护上,是会有一定成本的。包括学习成本。当你在项目中遇到这种问题就够头大的了。
比如:你的项目中使用 Swift 某一个版本,在下一次 Swift 更新后,你的项目中就需要针对这块做处理,可以理解为给项目带来了额外的开发成本。
再比如:你的项目中使用了一个第三方开源库,因为是第三方的,所以你自己是不可控的,如果这个库在某个 Swift 版本兼容出问题了怎么办?相对来说,OC 已经不会变化了,这种风险基本没有了。
最后:
回到你的问题:
“最近招ios开发,发现还是使用oc开发语言为主,少用使用swift为主的,目前是2020年,是什么原因让大家不使用swift呢?”
不同的公司和团队,招聘时也是针对当前项目来选人的
比如:某家公司的项目都是 OC 开发的项目,那么在招聘时的要求就是“精通 OC”,而了解或者可以使用 Swift 开发,这属于加分项。
再比如:某家公司的项目是纯 Swift 的,那么在招聘时的要求就肯定是“精通 Swift”,了解或者可以使用 OC 开发,这就属于加分项了。
现在的互联网大厂(像鹅厂、阿里、头条等),大部分项目都是老项目,所以开发还是以 OC 为主。这些大厂的 app 都属于超级 app 了,光是 iOS 开发团队都是百人级别的,像底层组件的开发、支持可能是另外一个部门,也都是 OC 为主。所以在选择某个语言时,考虑的会非常多。即使是新项目,也会考虑时间成本,如果已经有完整的组件库,而且都是 OC的,你说会使用哪个语言开发新产品呢?
除非 Swift 有什么特别牛的特性,会给终端用户带来多大的使用体验提升、给产品带来更低的成本或者更高的收益,否则为什么要更换一个更有“成本”的开发语言呢?带来的是更多的不确定的风险,相信很多公司、团队都会有所考虑的。
而一些创业公司或团队,用 Swift 的会比较多,因为历史包袱少,也就倾向于选择新东西了。所以在招聘时也会优先考虑选择开发者的 Swift 经验。但如果这个团队是以 OC 为主(开发人员都是 OC 经验为主),那么就优先找 OC 经验的开发人员了。
新事物都是要有一个学习、适应以及进化的过程的,不论是这个事物本身要改进,使用的人也一样。现在 GitHub 上主流的开源库也都已经支持 Swift,也有新的库只有 Swift 版本,说明大家是在拥抱新事物的。
但是理想和现实是不同的,在现实的项目、团队中,是否使用新语言,真的是要综合评估的,不是说新的都好,也不是说老的一定对。而且作为技术负责人,是要做好这些评估的。
针对实际的“环境”,选择合适的开发语言。能够高效的开发、缩短开发周期、提高项目质量和稳定性、降低开发和维护成本,能快速上线,才是硬道理。
相信 Swift 会在未来完全取代 OC,但短时间内还是不会的。
作为开发者,不断的学习、更新自己的知识库,关注新事物的发展是必不可少的额,虽然不能在公司项目中使用,但可以应用在自己的个人项目中作为学习和实践的方式,扩展自己的技术能力。
最后,“适合”的才是最好的!
我来分享一下我碰到的情况。新项目开始,项目组进来五个人,技术水平参差不齐,但是项目要求swift为主。大家都表示不会swift,我说没关系给大家一周时间来学习。一周后,只有一个人表示愿意继续学习swift,其他人纷纷质疑为什么要使用swift,觉得oc就非常好用。由于项目时间紧急,好嘛,那我就让你们几个继续oc。
一个项目做下来,发现了他们为什么还在坚守oc的原因。
整个app项目分两个端开发,使用oc对应框架架构好基础后交给不愿意使用swift的几位开发。开发一周后发现了大问题。
1. 没有使用自动布局。知识体系还停留在iOS6.0之前,最高iOS11了。顺便问了问各个版本的新特性,要么是不清楚,要么是很模糊。
2. 各种低系统版本不兼容的API漫天飞舞。经常就是有的手机上正常,在低端机上就崩溃,还觉得莫名其妙的找到我,说基础架构有问题。
3. 内存管理MRC直接表示不懂。只用arc,不需要懂mrc。
这里只列举几点,其他的不想再吐槽了。从这几点就能看出这个开发人员为什么还停留在oc,是学习能力的问题!还没把oc摸清楚就直接不持续学习了,还有时间学swift?
在这次项目后来各种问题层出不穷,汲取教训后,就不会swift的开发人员直接不要。让你们继续坚挺oc吧。
原创文章,作者:普尔小编,如若转载,请注明出处:http://www.puerpx.cn/pxwd/8202.html