整洁代码训练营

55 阅读2分钟

先学心法

尊重墨菲定律

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)

再打基础

如同在少林寺练武功一样,学徒们都是先从每日的挑水、劈柴和做饭干起的。

英语

打字速度

版本控制工具

Git

编程工具

熟悉 IDE

快捷键

vim or emacs

拓展视野

深入一两门语言,日常使用