news view

什么才是好的代码?

每个写程序的人都会有这样的思考.

而其中很多人, 可能都会对 “优雅” 有执念.

Dan Abramov 今年分享了一篇文章, Goodbye, Clean Code.

里面提到了几点:

这里一方面提到了团队的重要性, 加强沟通, 提升信任, 另一方面主要说的就是, 什么是干净的代码? 我们再延伸一下, 什么是好代码?

在我初学编程的时候, 我在思考如何写出优良的代码.

在我初学软件工程的时候, 我总会听到大家的提醒: 不要提前优化.

好像有一些矛盾, 工程在阻止我写出好代码吗? 让我们把 “团队” 也加入其中, 一起想想.

关于如何定义好代码, 如何让团队写出好代码, 是有许多点需要去平衡的:

这些点并不能单独拿来说, 其中一些点是相互制约的, 另一些点是相互促进的.

关于如何平衡功能的实现与代码的优雅, 我的观点一直是:

  1. 代码的好是没有止境的, 只能无限接近于满分.
  2. 代码需要适应环境的变化, 尤其是高级语言.
  3. 基于以上两点, 好代码是慢慢进化的, 不断进化的, 不能一蹴而就.
  4. 先以最快速度完成基础功能, 然后不断优化.
  5. 开始时, 不使用框架或类库, 如果要用, 则使用基础的, 可插拔的.
  6. 随着项目的推进, 功能逐渐复杂, 产品目标逐渐清晰, 这时再考虑利用框架重构或重写.

Go Proverbs 中有这样一句话与 Dan Abramov 的文章异曲同工: A little copying is better than a little dependency.

现在, 就让我们停下来, 更多的思考, 然后进入对好代码执着的下一个阶段吧.

- software-engineering