头脑抓狂
近半年时间给自己列了很多计划,其实能坚持做完的真的不多,一方面是时间比较紧张,另一方面是有些计划需要点技术含量,而我当前并没有经验和能力来处理这些问题。每天回家或者周末在家,脑子里面不断地在冒出新的想法,新的计划,这让我的脑袋瓜真的有点大。
也不知道为啥,我就是痴迷于了解新的技术、新的知识点,却没有花太多时间去深入学习,即使学习了也没有进一步巩固。可能我心里认为,学了东西多了就是牛逼了,就是大神了,却不曾想,我走入了一条歧路。因为每一项知识点和技能都是浅尝辄止,遇到困难就退缩不前,只是知道皮毛,并不能成为大神,并不能算是牛逼。
反思自己
话说怎样判断一个攻城狮是高手还是菜鸟呢,可能每个人心里都有自己的评判标准。一直以来我对自己还挺自信的,毕竟作为开发iOS的老司机,已经有了4年的开发经验,工作中的任务都能应付得来。本来我以为这样已经可以了,可是这一段时间的经历让我对自己产生了怀疑。
为什么对自己产生了怀疑呢,俗话说没有对比就没有伤害啊。这段时间休婚假,我负责的业务模块转交给另一个同事来开发和维护,等我回来的时候,发现整个代码结构完全变了样,让我非常惊讶的就是代码比我之前写的清晰多了。
首先就是业务的分层更加精细,其次就是用了更好的设计模式和开发方式,让代码可维护性更好。我跟他交流,他说我之前的代码存在了几个问题,
- 代码结构不清晰,代码中滥用通知
- 数据状态太多,维护性太差
- 没有灵活使用swift,没有发挥出swift更大的作用
- 冗余代码太多,没有抽象封装
确实,他说的问题确实存在。原因是多方面的,首先就是我接手了别人的代码,在别人的代码基础上开发,并没有太大的决心和勇气去重构不合理的地方;其次,每个版本只有我一个人开发,工作任务中,开发时间紧,导致没有太多时间去做优化的事情。积累下来,导致代码可能性和可维护性越来越差。
在iOS开发中,大多数时候使用的是MVC设计模式,做的最基础、最简单的封装,大概就是处理了繁琐的TableView代码,其余的网络请求和数据加载、解析等都没有抽离出来。有一段时间也想换一种开发模式,比如Objective-C中经典的RAC,但是因为自己没有理解到位,反而导致模块中状态相互依赖,阅读起来更加困难。
他的代码这么好,我竟然看不懂
其实,对自己最无语的就是同事写的结构清晰、易于维护的代码,我竟然看不懂。怎么说呢?项目中虽然使用swift写代码,可是大多数时候我是把swift当做OC来使用的,对于swift很多高级的特性,并没有深入的理解。如果说OC是一把水果刀,那么swift就是一把瑞士军刀,它提供了很多的选择,组合起来使用更是犀利无比。
可能各位读者讥笑我看不懂同事的代码,我确实也不想隐瞒,在他的手里,灵活地将swift的特性使用起来,面向对象、面向协议、函数式编程、单向数据流编程、VIPER设计模式、MVVM设计模式、RxSwift和RxDataSources的完美使用。我他妈的,老子跟不上节奏啊。
他也跟我说,一个新的开发方式,就要从一个极其简单的demo入手,将基本原理吃透之后,再扩展开来,你就能够逐步理解这种开发方式了。可能我并没有完全理解他的这种说法,在开发中一头扎进业务代码里面,每一个模块的分层都把我搞得七荤八素,弄了半天也没弄明白。
大道至简,能解决问题的就是牛逼
之前在开发过程中,因为代码结构不好,导致一些BUG比较难改。而采用了新的设计模式和新的代码结构之后,出现问题可以立刻定位到出错的地方,不必从头到尾理一遍代码逻辑,无疑大大地提高了开发效率并减少了出错的概率。
跟厉害的人同行,总是能够有所收益,接下来的时间要从一个个小的demo开始,逐步吃透不同代码结构和设计模式的精髓,希望能够达到我的同事的水平。
加油啊,辣鸡。