news 2026/7/6 4:12:06

从事编程工作这么多年,经常会有人问我什么样的程序是好程序

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从事编程工作这么多年,经常会有人问我什么样的程序是好程序

有的甚至把程序给我看,让我给程序提提意见。而我从编程开始就踏上寻觅好程序之路。“路漫漫其修远兮 吾将上下而求索。”这好象正是我心历的写照。可以说追求编写好程序是我不变的目标。

好的程序?好的程序?什么样程序是好的?为什么这样程序是好的?中国人从小就被“好坏”教育。面对任何事物,他们都能给评出好坏来。评出结果出来,无非让复杂事物简单化,让人在第一时间能判别这件事好不好,这件事能不能做,好的就给与支持和赞美,好的就想去做就想做好。反之。我就不说了。

但是,好坏两个字好写,但是事物好坏的理由和标准却是绝对的复杂,有时甚至绝对的对立。从某种意义上来说,人类就是在事物的好坏上不断争斗中延续着自己。

“白日依山尽,黄河入海流,欲穷千里目,更上一层楼。”我们从小到大,经历过无数次教育,读过不知道多少本的书,看过不知道多少篇文章,能够记忆出来的,能够背诵出来的,能够打动自己心扉的,那就是诗了。诗成了生活的浓缩、提炼和升华。而诗人则成为历代百姓文人追捧的对象。虽然现代诗处于动荡和衰败过程之中,但是经过历史长河沉淀下来的名诗依然脍炙人口,让人永生难忘,几乎找不到一个连一句诗都不会说的人,可见诗的魅力无穷。

编写程序如同写文章,有的人会写成报告,有的人会写成小说,有的人会写成杂文,文体不限各显神通。但是我以为,好的程序如同一首诗,读起来行云流水,韵味十足。诗中或工整对仗,或错落有致,或排比拟人,或比喻夸张在程序中也能表现出来。

程序和诗歌都有内容和形式两个部分。内容是本质,反应了程序的功能,反应了程序的设计水平。形式是表现,反应了内容表述。好的程序应该象一首诗,有好的内容,有好的表现形式。我发现好程序和好诗歌一样都有一些要素,这些两者要素有相当的共同点:其要注意如下:

第一要素是要有逻辑。程序的逻辑从大的方面来说是反映了程序的结构,结构清晰明了,才能引人入胜!例如,有诗的格律,如五言、七律等,诗歌只能按照格式填写,诗的格律就是诗的逻辑构架。程序的逻辑结构往往体现在时序上,例如:初始化处理、功能处理、结束处理。如此设计将使得程序更显逻辑。从小的方面来时是反映程序构架下的流程,流程次序井然、前接后续,才能使得程序执行顺畅。

第二要素是用词。程序的用词一方面是指各种变量的命名方式,另一方面是函数命名的方式。程序的用词应该用英语,变量命名和函数命名其英文单词无论是用缩写还是全写都要符合大众的读者的习惯,避免用生词、偏词、自造词。我们看到古今中外的名诗大都是用通俗易懂的词汇进行艺术组合而形成的。很少有非常用字出现。编程中要特别注意函数名中的主谓宾搭配,让读者读起来更加上口。

第三个要素是短小。编程如同编写文章,好的文章如歌如诗,其特点就是短小,一般的五言、七绝只有四行就能包含一个很深刻的主题了。编写程序也是相同的道理,要尽量让程序的行数减少。一方面要考虑在总的程序行数减少,另一方面要增加函数,使得函数里的语句行数减少。

第四个要素是精炼。一首好诗能在几句话中就激发读者的情绪、鼓舞读者的斗志、展示大自然的美景,揭示各种人生哲理。其中主要原因是诗人的能用精炼的词汇来表达诗的内容。对于编程来说,精炼就是多用函数,多用系统函数,让各种功能都浓缩在函数之中。

第五个要素是一致。一首好诗往往能读到排比、读到对仗这样的修辞手法。说到底者都是诗歌的一致性的要求。编写好的程序同样要注意一致性的要求,例如,我们尽可能采用相同的语句结构、相同的语句的缩进、相同的命名规则、相同的动词、相同长度的语句、相同计数变量、相同缓冲区变量、相同的处理函数、相同的处理流程等等。这些相同使得程序各个层次和各个方面看上去非常规范和一致。

当我们能用写诗的要求去编写程序,当我们能用诗朗诵的感觉去阅读程序,我们的程序员将不再机械地编写那毫无生命的代码,我们的程序员将充满激情谱写出一曲动人的乐章,感动着自己,也感动着读者。每一个代码充满着活力,是跳跃的艺术音符,无数个代码的组成却是流淌的诗,一段一段,一行一行,给人以诗的享受。我们可能永远不能写出传世之诗,我们却能够要求自己编写如诗的程序,享受那种写诗的过程和情趣。 不断地追求诗的境界将会让我们的程序更加精炼、编程工作更加美好。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 4:09:32

2026年5月28日更新:GPT-5.5 Instant 更新与旧模型退场

🔥个人主页:杨利杰YJlio❄️个人专栏:《Windows 疑难杂症与工单复盘案例库》 《Sysinternals实战教程》《WINDOWS教程》 《Windows PowerShell 实战》 《人工智能实战合集》《超简单:用Python让Excel飞起来》🌟 …

作者头像 李华
网站建设 2026/7/6 4:07:17

101与金根回顾敏捷个人:(17)技术研究之道

作为技术人员,经常遇到没有接触过的技术,有时是点滴的小技能,有时可能是大的一个研究课题。在《个人管理 - 从小工到专家》中有一个复用级别的图,其中每一级别都是需要研究的,复用粒度越大的需要投入研究的…

作者头像 李华
网站建设 2026/7/6 4:05:35

Nginx进行配置文件拆分(以windows解压版为例)

Nginx压缩包解压后,只有一个默认的nginx.conf配置文件,可以通过下面的配置方法简易拆分成多个配置,提高可读性和可维护性。 原理简介 了解过 Nginx 的应该知道,配置文件的http块里面是由一个个server块组成的。 每个 server 块都含…

作者头像 李华
网站建设 2026/7/6 4:05:26

网上的若干算法都太复杂了,现提出包氏算法如下:

先for循环把arr1中的元素入栈,并在每次遍历时,检索arr2中可以pop的元素。如果循环结束,而stack中还有元素,就说明arr2序列不是pop序列。static bool JudgeSequenceIsPossible(int[] arr1, int[] arr2){Stack stack new Stack();f…

作者头像 李华
网站建设 2026/7/6 4:03:20

LangChain FewShotPromptTemplate少样本应用实战

里有个容易踩的坑:创建 FewShotPromptTemplate 的时候,examples 和 example_selector 这两个参数是互斥的,必须填其中一个,不然代码直接报错。绝大多数情况下,我们直接用 examples 参数把准备好的示例数据传进去就行。…

作者头像 李华