如何将所学的基础知识转为开发生产力?
科班基础课很难直接转为开发生产力,但是能潜移默化的提高和加快自己对各种技术的理解。
数据结构与算法 和 设计模式 相较于操作系统、组成原理、编译原理等基础学科,能更直接地提高学习者的开发能力。
为什么学习设计模式?
- 面试
- 避免写烂代码
- 提升应对复杂代码的设计和开发能力
- 提高自己阅读和理解源码的能力和收获
典型的烂代码:命名不规范、类设计不合理、分层不清晰、没有模块化概念、代码结构混乱、高度耦合等,这样的代码维护起来非常费劲,添加或者修改一个功能,常常会牵一发而动全身。
大部分工程师比较熟悉的都是编程语言、工具、框架等,因为每天的工作就是在框架里根据业务需求,填充代码。相对来说,这样的工作并不需要具备很强的代码设计能力,只要单纯地能理解业务,翻译成代码就可以了。
但是如果要开发一个跟业务无关的比较通用的功能模块,面对这样稍微复杂的代码设计和开发,有点力不从心,不知从何下手。因为只是完成功能、代码能用,可能并不复杂,但是要想写出易扩展、易用、易维护的代码,并不容易。
需要考虑的问题:如何分层、分模块?应该怎么划分类?每个类应该具有哪些属性、方法?怎么设计类之间的交互?该用继承还是组合?该使用接口还是抽象类?怎样做到解耦、高内聚低耦合?该用单例模式还是静态方法?用工厂模式创建对象还是直接 new 出来?如何避免引入设计模式提高扩展性的同时带来的降低可读性问题?
在缺少设计模式、设计原则、面向对象设计思想情况下,很难解决上述问题。
在学习开源项目框架源码时,经常会遇到看不懂、看不下去的问题。实际上,那就是自己积累的基本功还不够帮助自己看懂源码。
优秀的开源项目,代码量、类的个数都会比较多,类结构、类之间的关系极其复杂,常常调用来调用去。所以,为了保证代码的扩展性、灵活性、可维护性等,代码中会使用到很多设计模式、原则或者思想。如果不懂这些设计模式、原则、思想,在看代码的时候,可能就会琢磨不透作者的设计思路,对于一些很明显的设计思路,可能要花费很多时间才能参悟。相反,如果对设计模式、原则、思想非常了解,一眼就能参透作者的设计思路、设计初衷,很快就可以把脑容量释放出来,重点思考其他问题,代码读起来就会变得轻松了。
自己觉得自己看懂了开源项目的源码,但是实际上并没有得到代码中的精髓思想。
“什么是好的代码?如何写出好的代码?”
如果你是一个技术 leader,负责一个项目整体的开发工作,就需要为开发进度、开发效率和项目质量负责。不希望团队堆砌垃圾代码,让整个项目无法维护,添加、修改一个功能都要费老大劲,最终拉低整个团队的开发效率。
除此之外,代码质量低还会导致线上 bug 频发,排查困难。整个团队都陷在成天修改无意义的低级 bug、在烂代码中添补丁的事情中。而一个设计良好、易维护的系统,提高自己和团队能力的事情。
代码的设计能力和代码能力。
在游戏开发中经常用到非常多的设计模式,比如:对于游戏的设置,ui和scene等各种manager管理类都要用到单例模式。创建游戏中各种角色的各种工厂模式还有对象池。处理游戏角色的各种状态的有限状态机要用到状态模式。