编程范式

举报
dfsafdfas 发表于 2020/12/15 20:57:02 2020/12/15
【摘要】 编程范式有多种,主要有结构化的程序设计思想、基于对象的程序设计思想、面向对象的程序设计思想、基于接口的程序设计思想。那么这些范式各是什么意思呢?别着急,我们通过一个加法器的例子来逐一说明。结构化程序的设计 我们来实现一个加法器,在这个加法器中已经保存了被加数,现在需要传递加数到加法器。如果你是一个C语言开发,第一反应多半是,这个很简单啊,用一个结构体来保存被加数,然后再外带一个加法函数就行了...

编程范式有多种,主要有结构化的程序设计思想、基于对象的程序设计思想、面向对象的程序设计思想、基于接口的程序设计思想。那么这些范式各是什么意思呢?别着急,我们通过一个加法器的例子来逐一说明。

结构化程序的设计

 我们来实现一个加法器,在这个加法器中已经保存了被加数,现在需要传递加数到加法器。如果你是一个C语言开发,第一反应多半是,这个很简单啊,用一个结构体来保存被加数,然后再外带一个加法函数就行了啊.

代码中,结构体Augend保存了加法器的被加数,具体而言,就是由iAugend保存,第9至12行给出了加法函数的定义。该函数接收两个参数,一是Augend结构体的指针,二是加数iAddend。
  但这个时候老板来了,他对你说,这个加法器要修改一下,现在需要给被加数添加一个权重值,而且以前的加法器要保留,因为还有一部分代码要保留它。没办法,拿人家的手短,吃人家的嘴软,继续当“码农”吧。既然有一部分代码要用到老的加法器,那么老的加法器我们还是保留的,这样一来,就可以按照新的思路来开发新的加法器了,具体可以看到代码思路同上一个代码是完全一致的,不同的只是结构体和函数名称。很显然,WeightAugend保存了被加数和权重,而WeightAdd则是带权重的加法函数。好了,现在我们分析一下按照结构化程序设计思想实现的加法器有什么缺陷?学过面向对象的肯定会一口就能说出来,数据和操作这个数据的函数或方法没有封装在一起。确切一点就是,这个加法器没有把被加数、权重以及操作它们的加法运算封装在一起。另外一个缺陷是什么呢?因为引入带权重的加法器之后,需要对部分老代码进行修改,显然没有做到代码封闭,即没有实现这一变化点的封装。的方法如下

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。