当前位置: 首页 > news >正文

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

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

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

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

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

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

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

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

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

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

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

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

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

http://www.cnnetsun.cn/news/3175660.html

相关文章:

  • 2026年5月28日更新:GPT-5.5 Instant 更新与旧模型退场
  • HarmonyOS 小游戏《对战五子棋》开发第3篇-项目配置文件全解析
  • 101与金根回顾敏捷个人:(17)技术研究之道
  • Nginx进行配置文件拆分(以windows解压版为例)
  • 网上的若干算法都太复杂了,现提出包氏算法如下:
  • LangChain FewShotPromptTemplate少样本应用实战
  • 硬件版【Cursor】?aily blockly IDE尝鲜封神,实战硬伤尽显
  • 【Bug已解决】Claude Desktop 报错 Virtual Machine Platform not available 解决方案
  • 基于scRNA解析HNSCC肿瘤免疫微环境中Tfh、Th17细胞浸润的预后价值
  • 商用轨道插座怎么选更划算 各品牌性价比盘点帮你避坑少花冤枉钱
  • Windows Mobile下访问Sqlite的Native C++封装
  • Unity URP卡通渲染着色器:从原理到实践的完整指南
  • 3步掌握AMD Ryzen SDT调试工具:专业级CPU性能调优完整指南
  • NHibernate Issues之1904/1905:相同属性的Domain与Join查询/子查询
  • 智能办公本X2:端侧AI驱动的手写语音协同工作流
  • 大语言模型解码策略与低资源部署技术详解
  • NHibernate实例分享:Northwind Mapping
  • 2026年全铜卫浴五金洁具厂商口碑情况汇总
  • Vben精讲:06-Vben环境变量配置
  • MoeKoe Music终极指南:如何用开源免费客户端享受VIP音乐体验
  • Python自动化测试·Selenium操控元素的方法
  • 从Qwen-AgentWorld看大模型智能体如何操作真实系统:架构、挑战与工程实践
  • Cline 配置 Claude Sonnet 5 实战指南:思考深度调优与切换 Fable 5 的时机
  • 恶劣天气数据集 极端天气数据集 雨天道路数据集 雾天道路数据集 雪天马路恶劣环境图像目标检测数据集-道路障碍物识别数据集-数据集第10119期
  • 三千米浮空飞艇视频接入,广域立体视频孪生全域侦监技术解读 野外复杂地形动态重建 · 演训场景视频孪生目标三维重构完整体系
  • 毕业生必备7款AI写作辅助网站,一站式搞定选题初稿与降AI率
  • GHelper:华硕笔记本开源高效控制工具的专业替代方案
  • 成都茶台定制推荐
  • YOLOv10模型改进-Neck改进-第74篇:YOLOv10改进策略【Neck】| FPN-DCN可变形卷积
  • 连锁超市收银系统选什么?千店实测与商拓深度测评