高速度和高质量是我们软件开发人员的追求。我们都想写代码既快又好,但是现实是很难两者兼顾,那是理想很难实现。按照这两个基本要素来对程序员进行分类:
一.做的既快又好的;二.做的好但是慢的;三.做的既慢又差的;四.做的快但是很差的。
俗话说慢工出细活,做得越多问题。千行代码有一个bug很正常,没有bug的软件只能说明你测试不充分或设计错误(如:只打印一个hello world)。所有开发软件质量最好的只会出现在第二类人中。做的最快的是第四类人,考虑的少,当然做的快。对软件危害最大的人也是最四类人。本来做的越多问题越多,再有出问题多的人开发,当然问题更多。这类人有可能出现极端现象,开发一个功能,做这个功能的时间比修改这个新功能的时间还少的多。在软件行业最容易淘汰的人就是第四类人,其次是第三类人。至少做的慢又差的人做的没有那么多,问题也没有那么多,做得慢,所以有很多补救的时间,所以质量虽然差,也比第四类人开发的软件质量高。第一类人是我们的追求,通常这类人的全局观比较好,不想加班,最后最容易进阶为领导。所以一直做程序员的第一类人十分少,当然由于做的快,一般质量很难和第二类人比,但是这类人的速度和质量的平衡是最好的。慢工出细活,所以第二类人开发的软件质量最好,随着年龄的增长,由于考虑的问题更多,所以开发软件的质量反而越慢。最后大龄程序员第二类人最多,他们也有提高速度的方法:加班。
这四类人之所以差异那么大,主要是由性格和做事方式决定的,其次才是工作经验。一般很难转变。你别指望第二类人快速变成第一类人,也别指望第四类人快速变成第一类人。这是不现实的,不是想改就改变的。有得必有失,有失必有得。
实现一个app并不难,但是做一个完美的app是需要大量时间和精力。一般老板不会给你大量实现来完成一个app,老板追求的是速度第一,质量也要好。我们程序猿一直做的就是在速度和质量之间来平衡。若老板给的时间还算充足可以一步到位实现app,采用最新的架构(如MVVM架构,采用该架构写的代码一般拆分的比较细,通常很费时间。但是代码清晰性也好的多,一般性能也要好的多)。当然若老板给的时间很短或超级短,只能先用最快的方法上线app(时间少到一定程度,甚至采用甚至不还不如mvc的流水线式模式,如采用FMBaseiOSKit开发),然后通过重构再改架构,达到app的逐渐完美。后者比前者更费时间。
完美的app:内存最小,包最小,性能更快,耗电量更低,启动最快,请求耗时最低,页面完过渡完美。这些决定了速成app的技术和架构不适合开发这种高性能的app,这种app不是通过不断修改bug达到的,是采用了较复杂的架构实现。使用的技术有:废弃开发快长驻内存的单例请求方式,采用发送一次请求创建一个请求对象的mvvm模式,页面弹出时,对象自动释放。采用网络请求的网关模式,维护了网络请求通道,减少创建tcp/IP网络通道的时间,统一对网络请求进行数据转换和参数设置。合并请求(业务无关页面相关的请求,后台建立中间层,把几个业务无关的请求合并成功统一发送给app。毕竟后台之间是局域网,基本不会出现丢包,而app和后台间是不稳定的移动网络,随时都可能断网),防止出现加载一个页面需要发送多给请求,这样既费电,加载又慢,容易出错。采用懒加载方式,提高app启动速度和页面过渡效果。