转自安居客技术博客
We have seen that computer programming is an art, because it applies accumulated knowledge to the world, because it requires skill and ingenuity, and especially because it produces objects of beauty. A programmer who subconsciously views himself as an artist will enjoy what he does and will do it better. Therefore we can be glad that people who lecture at computer conferences speak about the state of the Art.
Computer Programming as an Art。
毫无疑问,如果计算机程序作为艺术品首先要美。美包括多个方面,程序运行时呈现的界面要漂亮;文档要美观;很重要的,代码本身也要看着舒服。
对于工程师来说,我们接触最多的是代码本身。当我们看书法作品时,首先看到的是整篇文字,这里面的排版,字体的大小,间隔的分布都将影响到整个作品的美观程度。然后才是一个个具体的字。
那么代码也是首先需要有合理的排版,与文本的文字一样,
- 需要有的合理顺序
能够顺序阅读的代码是最舒服的 - 段落之间要留有适当空白
- 指令之间以适当的空格分割
- 正确的缩进
- 一行代码不应该太宽
如果超出屏幕的显示宽度,肯定影响了阅读体验。折行的显示也损害了代码的美观度,尤其是在需要打印输出的情况下。
在计算机程序中,我们会对各种标示符进行命名,例如变量名、函数名、类名等等。对这些标示符的命名,应当采用简单明确的原则。能否看到名称就能够知道其意图是一个很好的衡量方式。同时也应当避免过度冗长的名称,因为这样既显得无意义,也降低了代码的美观度。
另外,拼写错误的名称将极大影响代码的美观。
优秀的代码应该能够清晰地表达自己的意图,这样的代码能够自我解释,不需要有冗余的注释。对一些特别的实现,代码本身难以表达的,才加上注释。
计算机程序最终呈现出来的界面也要美观。这里包括了与用户交互的界面(UI);与其他程序交互的编程接口(API)。
美观的代码对工程师是一个基础要求。
要写出美的程序,工程师必须是一个爱美的人。可以看他的开发工具是不是很美,编辑器里的字体是否漂亮,色彩搭配很美。很难想象一个用着糟糕字体编辑器的工程师能够写出美的代码。
酷是创造性的东西,是很特别的,与众不同的。酷的程序往往来自于创新,采用了一个与传统方式不同,却非常有效的方法解决了问题。
你的程序如果真的很酷,很快就会有各种模仿者。
具有激情,乐于尝试新东西的工程师才能够做出酷的东西来。这样的工程师,总觉得目前的实现不够好,还能够更好,并努力尝试新的方法。
对于一个功能,计算机程序可以采用多种方式实现,虽然他们的结果可能一致,但是实现方式确可能有好有坏。这可以表现在程序执行的性能、需要占用的资源等方面,甚至代码的行数。一个排序方法,使用不同的算法,性能的差异可以是天差地别。优雅的代码应该采用简单合理的数据结构、算法和设计模式。
优雅很大程度上体现在对计算机程序的设计上,尤其是在需要多个程序相互协同工作的系统设计时,优雅的设计和糟糕的设计将有很大的区别。
其实优雅的代码和设计对人也是友好的。能够让阅读代码的人感到愉悦,充分理解代码的意图。
做出优雅设计的工程师必须拥有丰富的编程经验。在经历了非常多的代码和设计之后,善于总结和学习的工程师逐渐掌握了方法,能够在优雅的设计和糟糕的设计之间做出正确的选择。