找回密码
 注册
搜索
热搜: 超星 读书 找书
查看: 320|回复: 0

[【推荐】] 如何写漂亮的程序 好的程序应该象一首诗

[复制链接]
发表于 2010-2-15 17:48:06 | 显示全部楼层 |阅读模式
  从事编程工作这么多年,经常会有人问我什么样的程序是好程序,有的甚至把程序给我看,让我给程序提提意见。而我从编程开始就踏上寻觅好程序之路。“路漫漫其修远兮 吾将上下而求索。”这好象正是我心历的写照。可以说追求编写好程序是我不变的目标。

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

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

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

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

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

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

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

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

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

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

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

http://dev.yesky.com/161/11139661.shtml
程序员参考
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|网上读书园地

GMT+8, 2024-11-18 19:34 , Processed in 0.256050 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表