思维
实践与理论
- 大致浏览某个主题的书,当你看不懂理论时,就立刻实践、试错。
- 这时候你实践过,并积累乐一些问题,再反过来看理论时,犹如拔开云雾见青天。
- 最后,你可以将自己所学的打包教给别人。
工具化思想
时刻都要想着,当前的这个工作内容,是否能够用工具、技术等手段,减少重复,提高效率。
流程化思想
同样的话,你对一个人说,没有问题,对两个人、三个人、五个人可能都没有问题,但十个人呢?二十个人呢?若干个人呢?
在实际的工作中,会发现,最不可控的因素其实是人,而能够控制或者说解决的手段,就是把事情、把工作内容,流程化、规范化、制度化。
优先做重要紧急的事情
分解思维
应用例子:想通过创建一棵树结构 JSON,不是一开始就想着直接通过程序构建。 第一步:可以先实现一个一维数组,里面的节点均是带有 id 及父 id的; 第二步:根据这个一维数组,生成一棵树结构。
框架思考
只有我们对这些库、框架解决的问题有深入的了解和思考以后,我们才能得心应手地使用它们,并且有新的框架出来也不会太过迷茫————因为其实它们解决都是同一个问题。
系统架构
总体架构,前端架构,后端架构
- 总体架构
- 数据层(数据获取、数据处理、数据存储)
- 应用支撑层(ArcGIS Sever、Web 后端)
- 业务逻辑层()
- 表现层(浏览器、小程序、手机 APP)
编码心法
- 怎么添加代码注释
- 异常与返回值有什么不同
- 什么时候需要抛出异常(宁愿终止程序也不要带错运行下去)
- 异常需要携带什么信息
- 参数校验的作用
- 什么时候需要进行参数校验
- 参数检验需要做到什么程度
学习源码
学习源码的好处
学习是为了更好的工作,工作中难免会遇到一些问题,学习源码最直接的好处是能帮你直接定位问题的根本原因,从而帮助你解决问题。很多人抱怨加班多,不妨问问自己,有多少时间是在写业务,多少时间是在写业务,多少时间是子啊写(找)bug。快速定位问题解决 bug,可以有效地提升你的工作效率,很可能就不用加班了,甚至会多出学习的时间,形成一个良性的循环。
学习源码可以很好地巩固基础,修炼内功,提升技术。前端几乎都会学习 JS 的基础知识,如类型、变量、函数、作用域、闭包、原型链、event loop 等知识。但很多人很难把这些知识在实践中运用自如,主要原因还是实践的少了,大部分时间都是在写业务的胶水代码。学习 Vue.js 这类框架的源码,会不断去巩固这些知识点,如果你源码看熟练了,那么你的 JS 基础就会更扎实。
学习源码有助于你更好地理解所用的技术栈,更熟练地在工作中运用。比如你深入学习了 Vue.js 的核心源码,你会理解 Vue.js 框架产生的意义、Vue.js 的职责边界、数据驱动的本质;你还会知道如何实现的组件化,在什么生命周期应该做什么事情,如何编写 Vue.js 的插件,如何和其它第三方 JS 库深度结合。你再也不会问“如何用 Vue 实现 XXX” 的傻问题了。
学习源码的时机
通常我们去学习一个技术栈的源码的时机是在我们对他的使用已经很熟练的情况,这时候应该系统的学习。 第二种是工作中使用某一个新框架的时候,遇到某个问题去看源码。
如何看源码
主:输入输出。 辅:函数+数据结构。
先跑起来
- 全盘了解
主线优先
关心核心流程,查看输入和输出,看函数以及数据,略过条件分支和循环分支以及一些边界情况的考虑。因为一个程序主要是由算法+数据组成,算法通常是函数组成,采用特殊的数据结构存储数据。
问题驱动。
如数据驱动和组件化
阅读技巧。
- 断点。
- 单元测试。
- 画图。
利用好测试用例
测试用例往往是针对某个单一的场景,独自构造出一些数据来对程序的流程进行验证。
参考资料
- 如何写代码 —— 编程内功心法 —— 如何写出更严谨的代码的一些想法
- 如何阅读一份源代码?
- Vue 技术揭秘