先学心法
尊重墨菲定律
if it can go wrong, it will.
如果可能出错,那就一定会出错。
在软件工程中,开发人员总是会有些侥幸心理,很多方法、很多模块的设计总是只考虑最乐观的情况,对于异常和极端情况的处理总是会觉得头疼,偷懒的时候就会绕过这些情况的处理,一般的测试没有问题,但这时墨菲定律就会生效了,可能出问题的地方,迟早还是会出问题的,越迟发生,成本损失将会是越大的, Production issue 发生造成业务的直接损失,越古老的 bug, 开发人员越难以回忆和处理,后期基于这一错误的代码会越来越多,修改时影响面也会越来越大。
相信 Later means never 定律
We say that we will do something later, but we will never really do it.
迟些再搞就是再也没机会搞。
在软件工程中,经常会遇到因为进度压力,而采用一些设计上不够完善的临时解决方案,项目组的借口是先解决主要问题,后面有时间了再优化设计或结构。然而 Later means never 定律这时就会生效了,项目组再也不会有机会改进这部分设计上的问题了。
通常只有因此出 bug 时才会被再次关注,特别是 production issue 时才能引起重视,然而,这个时候也就有些晚了,一方面 production issue 可能已经实际造成了业务上的损失,另一方面,代码已经通过了多重测试等,可能开发人员已经没有动力对它进行较大的改造了,最常见的处理方式就是贴膏药式地修修补补,使代码变得更加难看。
坚持一些原则
DRY 原则
坚决不重复三次以上
KISS 原则
奥卡姆剃刀 原则
如无必要勿增实体
学会函数式编程
- map
- filter
- reduce
- sort
- 不可变类型(immutable)
- 没有副作用(No Side Effect)
- lambda函数
- 惰性求值
- 并性处理
理解面向对象 SOLID 原则
1. 单一职责原则(Single responsibility principle)
2. 开闭原则(Open-closed principle)
3. 里氏替换原则(Liskov substitution principle)
4. 接口分离原则(Interface segregation principle)
5. 依赖反转原则(Dependency inversion principle)
再打基础
如同在少林寺练武功一样,学徒们都是先从每日的挑水、劈柴和做饭干起的。