代码封装的思想,竟然在中国古代就已经存在了

代码封装的思想,竟然在中国古代就已经存在了

#引子
封装,是面向对象编程的三大特征之一,与此同时,封装也是一种思想,可以帮助我们更好地组织和管理代码,但是,这种思想绝不是因为编程而产生的,早在很多很多年前,封装的思想就已经存在了,在我的故乡,就流传着这样一个故事…

#正文
他叫袁序成,是明代河南布政司归德府睢州人,自幼熟读诗书,却屡试不第,直到35岁才考中举人。他曾梦想自己像远房伯父袁可立一样镇抚一方,名垂青史,但现实的冷酷让他不得不重新考虑自己的未来,看着家中妻儿老小,他决定不再参与科举,接受朝廷任命的官职,成为归德府中典史手下的一名小吏。

虽然只是个不入流的小官,但已过而立之年的他却很满足,他兢兢业业,带领数十名捕快,发誓除尽城中鸡鸣狗盗之辈,还百姓以安宁。

他的日常工作之一,是撰写城里的缉拿告示,每隔一段时间,上级都会把可能流窜至州府境内的贼人名册发给他,有时是一两人,有时是四五人。接到名册后,他都会马上写好告示,并让人张贴到城墙上。
很多次,他都能很快抓住贼人,同僚们也都对他的差事赞许有加。直到崇祯二年(1629年)。

在这里插入图片描述

这年十月,皇太极亲率大军出征关内,他们绕过山海关,借道蒙古,越过宣大防线,一月之内竟已到达京师附近,全国的气氛立即紧张了起来。

更让人担忧的是,西北地区连年大旱,民变四起,陕西、山西、河南等多个行省的流寇大有连成一片之势,上头每次发来的贼人名册,也从四五人一下暴增至几十人。袁府吏不禁感叹:时代变了啊!

然而,现实没有留给他太多哀古伤今的时间,因为他还面临着一个更加严峻的问题:要他写的缉拿告示实在太多了!

过去,他每天花一个时辰就可完成的工作现在已经成了巨大负担,每次写完几十份告示后,他都感到无比疲惫,更让他郁闷的是,这些告示除了名字、悬赏金额、日期外,其他内容几乎一模一样,但他没有办法,只能一遍遍重复地写着相似的内容。就这样,他白天捉贼,晚上熬夜写告示,终于有一天,体力不支,病倒了。

病倒以后,典史让他在家休息养病,闲来无事,他最喜欢的就是读书。一日,他翻书时,突然发现有一本书里竟然有两张纸内容一模一样,显然是装订错了,但他却恍然大悟,跳起来直奔在印书馆当差的朋友家,请他帮忙用刻板印刷法印一批告示出来,朋友欣然答应。不出两天,一千份告示就印好了,这样,袁序成每次只需填写姓名、悬赏金额、日期,一份告示就完成了!

在这里插入图片描述
袁序成活了66岁,他死后多次转世,最终在20世纪70年代,托生成了这个星球上的第一批C语言程序员。俗话说代码是逻辑思维的直接体现,程序员袁序程逻辑极佳,编起代码来也是得心应手,但久而久之,他又发现了一个问题:有些代码段总是会反复用到,比如排序的代码段、求极值的代码段等,每次都要从头去写,既影响工作效率,又制约逻辑,让代码变得十分冗长不说,还严重影响他人阅读。

面对这一问题,他思考了良久,一种熟悉的感觉涌上心头,突然灵光一闪,有了主意——把反复用到的代码段单独写成一个模块,只留参数输入输出的通道,于是乎,世界上第一个子函数诞生了。看着自己工程里一个个功能各异的子函数,他感到很欣慰。

由代码变为子函数,这就是封装思想散发的光芒。而现在回过头来看,中国古代的刻板印刷术,不就是祖先们对汉字这一我国最古老“编程语言”的封装吗

故事到这里还没结束,因为除了子函数,类也是代码封装的重要工具,下一篇故事,我们来讲讲,在1930年代的英国,基于类的封装思想是怎么帮助我们的主人公渡过难关的。

#后记
前段时间,一直有身边的朋友和我探讨面向对象程序设计的一些概念问题。面向对象的三大基本特征:封装,继承,多态。这些个概念说难不难,但如果单从编程的角度去讲,未免有些枯燥,于是就想出了几个故事供大家开心一下,如果看完之后能若有所思,那就是对我最大的肯定了。

本文中的人物、故事情节纯属虚构偶,如有雷同纯属巧合,图片来自网络。

但是,归德古城却是实实在在的地方,她是我的故乡,拥有4000多年文明历史,是中国历史文化名城,是商业、商品和商文化的发源地。

这里很美,有视频为证。链接在此

由于正在修复,所以城里很多地方都在盖房子,像个大工地,但相信施工完成后,这座历史悠久的古城一定能变得更加美丽!

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值