好的代码——个人观点
在准备上一次面试的时候,我问了自己一个问题:什么是好的代码? 其实我一直都喜欢思考这类问题。我们常常谈到整洁代码、设计模式,这些都或多或少有一定了解。但经过一番思考,我给自己提出了一个新的答案:
“好的代码就像写一本书。”
具体来说:
- 书有一个书名,通过书名可以大致了解内容方向。
- 打开书,最开始会有一个目录,目录又分为几个章节。
- 每个章节下又有不同的小节,结构清晰。
- 每个小节指向具体的内容。
代码也应该遵循这种结构化的思维。我通过工程的名字就能大概知道这个项目的功能。接着是 package
(包),再往下是 class
(类),类中的 method
(方法)应该具有明确且见名知意的方法名。方法内部的代码实现也应该如同书中的文字一样简洁明了。例如:isBirthdayValid()
检查生日是否合法,shouldAlertAlarm()
判断是否应该报警。
代码中不应该有太多复杂的逻辑。如果有复杂的逻辑,应该把它们抽象成方法,而不是在代码中堆叠各种 flag
。我们不应该写那种把一个 flag
在 200 行之后才去使用的代码,这样会让代码的可读性变差。
后来,在面试中,面试官也问到了这个问题:什么是好的代码? 我回答说:好的代码就像写一本书。面试官稍微楞了一下。我赶紧补充道,好的代码还要符合开闭原则、里氏替换原则等等。这一回答应该是得到了认可。
之前我以为这样理解代码就已经足够好了,这也是我非常喜欢的编码风格。
但是,随着工作经验的积累,我发现设计模式也是写好代码的重要一环。设计模式是程序员之间的一种通用语言,它不仅能减少代码的重复,还能让代码更容易修改和维护,同时满足开闭原则。
再后来,我意识到一个优秀的程序员还需要对性能和**资源(如内存)**进行控制和优化。我们平时在项目中可能不会经常遇到特别复杂的算法问题,大多数数据量也并不大,所以算法的复杂度通常可以忽略。然而,I/O 操作的次数直接影响到程序的性能,因此减少 I/O 操作是提高性能的一个重要途径。
此外,多线程也是优化的一大工具。当我们需要同时读取多个数据源,或进行大批量操作时,使用多线程能够显著提升性能。尤其是在不希望重复编写批量处理逻辑的情况下,多线程开发可以使代码更加简洁高效。