提到编程,不管是行外人还是行内人,都会觉得是个很理性,很复杂,很讲逻辑的事情,和文学扯不上任何关系。
对于行外人来说,编程写的是一堆如同天书的乱码,一眼望去,密密麻麻。单词和符号混杂,放眼望去,一会等于号,一会逗号,一会分号,还有中括号、小括号、大括号……奇奇怪怪,看着都头大。即便不会编程,可能也听认识的朋友介绍过:编程,一个标点符号都不能写错!这么死板的东西,你说是文学?!
对于行内人来说,这些符号虽不再是无意义,但也会觉得整天不是在 if ...else...
,就是 while...do...
、for...do...
,处处可见逻辑判断,每天都要面对 bug
。这么煞风景的东西,你说是文学?!
编程,当然是文学了!
编程,靠的是编程语言。
既然是语言,怎么能说不是文学?把重点放在逻辑判断与流程上,那编程自然枯燥无趣,但若回归语言的本质,又会怎样呢?
一行代码是一句话。
几行相关的代码是一段话。
几段相关的代码是一个段落。
一个代码文件由多个段落根据一定的结构组合,是一篇文章。
一个模块,由多个代码文件组成,是一个章节。
一个软件,由多个模块构成,是一本书。
写书的事儿,怎么能说不是文学?
优秀的编程人员,对变量的命名反复考虑。希望见名知意,如同一位写诗的文人,对字词反复推敲;
优秀的编程人员,对空行也要遵循规范,如同一位写手,给自己的文章划分段落;
优秀的编程人员,希望以尽量简单而明了的方式实现一个步骤,就像一个作家,希望写出读来优美的语句,既不想显得啰嗦,也不想过于深奥。
通篇的大白话,就像只会用基础数据类型和逻辑判断的啰嗦代码;
通俗的成语,则像语言的函数库,使用最佳;
太过生僻的字句,是复杂度太高、可读性太差的算法,虽三两字可表达含义,他人却不一定看得懂,从而失去了可维护性。不追求专业性,尽量避免使用。
合理的文章,总有一个精心设计的结构。或按时间、或按空间、或按“总-分”、“分-总”、“总-分-总”等的逻辑结构,优秀的编程人员,对代码的结构也是精心组织和编排。
优秀的编程人员,知道代码是写给人看的。
自己要看,后来者也要看。
普通的编程人员,认为代码是写给计算机执行的。所以变量名随意命名,a1
、a2
随处可见,temp1
、temp2
处处可寻。新增功能,大段的代码复制再粘贴,从来不重构——计算机可以正常执行,功能已经正常实现,为什么还要多费力气调整结构进行优化和精简呢?
没有可读性,不可维护的代码是一种灾难。
就像小学生写的一篇流水账作文。事情都交代了,也说清楚了,就是少了些什么。
少了些文学的灵魂。
像写书一样写代码,才能把代码写好。
每一个变量,都是书里的一个人物,需要认真给它取一个名字。
每一个空行,都在给文章分段,考虑清楚才能敲下回车。
写完了代码,看看整体的结构,调整一下,让人更容易理解。
文件该拆分的时候拆分,该重构的时候重构,让这本书的每个章节主题更明确。
编程,多么考验编程人员的文学功底。
编程,是一件很文学的事儿!
本文首发在我的微信公众号“左手编程右手文化”上,公众号ID:devopscd。