在这一篇文章中,我们来讨论一些更加形而上的知识,即什么是好代码、什么是坏代码,如何写出好代码。在本系列文章的第一篇中,笔者解释了什么是Pythonic,并且认为Pythonic是一些正确的废话,然后给读者推荐了《重构》和《代码整洁之道》。《重构》和《代码整洁之道》都是使用Java语言作为思想的载体,为了节省读者的时间,并且强调一些Python语言的特性,所以有了读者现在正在看的这篇文章。
在这篇文章中,首先会介绍为什么要努力写出高质量的代码;随后,在第2节中回顾写出高质量代码的方法论;第3节是本篇文章的重点,里面包含了部分代码技巧;在第4节中,会讨论一个Python中颇具争议的语法,并给出笔者自己的观点和解释。
1 为什么要努力提高代码质量
怎样成为编程高手呢?或者换个说法,怎样才能成为某个领域的顶尖高手呢?很多人都会搬出一万小时定律。但是,一万小时定律有一个很关键的地方经常被大家忽略,即一万小时并不是简单的重复一万个小时,而是科学地训练一万个小时。没有科学的训练方法,重复再多时间都是徒劳,是在相同的专业层次上浪费时间。所以说,练习的关键根本不是训练的时长,而是训练的方法。
将练习的关键不是训练时长而是训练方法引申到编程领域,成为编程高手的前提并不是你写了多少行代码,花了多少时间进行编程,而是你科学训练的时间。遗憾的是,现在大学计算机课程并没有一门课讲授如何科学的进行编程。更通俗一点说,现在大学的课程只会教如何写代码,并不会教如何写好代码。计算机科班的同学都不会强调如何写好代码,更何况大量跨专业到互联网的同学,可能根本就没有意识这些问题。这或许就是为什么中国有无数的IT工程师,而各大公司依然难以招到合适的人的原因。
作为工程师,努力提高代码质量有无数的理由:
- 高质量代码的系统,其健壮性、可读性和可维护性更强
- 开发的系统生命更持久,作为工程师,我们的工作价值更大
- 对于一个大型系统,工程师大部分时间是在读代码,小部分时间是在写代码,将代码写得更加可读,有利于提高自己的阅读感受和工作效率
- 给以后维护你代码的人留下一个好印象
越是优秀的公司越是强调代码质量,越是希望求职者能够写出高质量的代码。笔者之前在微博上看到一位微软的工程师招聘,招聘描述里明确写着读过《代码整洁之道》的优先。其实《代码整洁之道》这本书并不是重点,重点是面试官希望求职者能够对自己有更高的要求,能够对自己写的代码负责。
唠叨了这么说,笔者仅仅是希望本系列文章的读者,都能够对自己有更高的要求,能够努力写出更加简洁优美、可读性强、可维护性强的高质量代码。
2 方法论
在本系列文章的第一篇中,笔者已经传授了Pythonic的方法论。即像写书、写报纸和写文章一样来写代码,减少容易