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

哪些网站可以做文字链广告卖水果网站建设的策划书

哪些网站可以做文字链广告,卖水果网站建设的策划书,汕头最好的seo外包,打开网站需要用户名密码1 - 原理篇 低耦合#xff0c;是指模块之间尽可能的使其独立存在#xff0c;模块之间不产生联系不可能#xff0c;但模块与模块之间的接口应该尽量少而简单。这样#xff0c;高内聚从整个程序中每一个模块的内部特征角度#xff0c;低耦合从程序中各个模块之间的关联关系…1 - 原理篇 低耦合是指模块之间尽可能的使其独立存在模块之间不产生联系不可能但模块与模块之间的接口应该尽量少而简单。这样高内聚从整个程序中每一个模块的内部特征角度低耦合从程序中各个模块之间的关联关系角度对我们的设计提出了要求。 程序设计和软件工程发展过程中产生的很多技术、设计原则都可以从内聚和耦合的角度进行解读。作为C语言程序设计的初学者结合当前对于函数的理解可达到的程度我们探讨一下如何做到高内聚低耦合。 针对低耦合。耦合程度最低的是非直接耦合指两个函数之间的联系完全是通过共同的调用函数的控制和调用来实现的耦合度最弱函数的独立性最强。但一组函数之间没有数据传递显然不现实次之追求数据耦合调用函数和被调用函数之间只传递简单的数据参数例如采用值传递方式的函数。 有些函数数在调用时利用形式参数传地址的方式在函数体内通过指针可以修改其指向的作用域以外的存储单元这构成了更强的耦合称为特征耦合在这里使函数之间产生联系的是地址这样的特征标识。另外有两个函数可能会打开同一个文件进行操作这也构成了特征耦合的一种形式。 更强的耦合是外部耦合这里一组模块都访问同一全局变量而且不通过参数表传递该全局变量的信息当发现程序执行结果异常时很难定位到是在哪个函数中出了差错。不少初学者觉得参数传递麻烦将要处理的数据尽可能地定义为全局变量这样函数之间的接口简单了但形成的是耦合性很强的结构。 在C语言中还可以通过静态局部变量在同一个程序的两次调用之间共享数据这也可以视为是一种外部耦合只不过静态局部变量的作用域限于函数内部其影响也只在函数内部耦合程度比使全局变量也还是弱很多。由此我们可以理解前述在使用全局变量、静态局部变量时提出的“用在合适的时候不滥用”的原则。 针对高内聚。内聚程度最高的是功能内聚模块内所有元素的各个组成部分全部都为完成同一个功能而存在共同完成一个单一的功能模块已不可再分。这样的函数功能非常清晰、明确一般出现在程序结构图的较低被调用的层次上。 次之的是顺序内聚一个函数中各个处理元素和同一个功能密切相关通常前一个处理元素的输出是后一个处理元素的输入。对于这样的函数如果不致于产生高耦合的话可以分开两个函数实现。 有的函数其中的不同处理功能仅仅是由于都访问某一个公用数据而发生关联这称为通信内聚和信息内聚内聚程度进一步下降。内聚程度再低的情况就不再一一列举最差的偶然内聚中一个函数内的各处理元素之间没有任何联系只是偶然地被凑到一起。 可以想像这样的模块东一榔头西一锤子类似一个毫无凝聚力的团伙对应的是低质量。总之在解决问题划分函数时要遵循“一个函数一个功能”的原则尽可能使模块达到功能内聚。 要做到高内聚低耦合重点是要在写代码之前花些时间做好设计。在下面的例子中将讨论结合具体的问题如何将以上的因素考虑进去。 2-示例篇 本例受裘宗燕老师《从问题到程序——程序设计与C语言引论》启发。 任务输出200以内的完全平方数一个数如果是另一个整数的完全平方那么我们就称这个数为完全平方数也叫做平方数要求每隔5个数据要输出一个换行。 解决方案及点评 对于这个简单任务我们在一个main函数中完成了任务。程序如方案1 //方案1内聚性较高的单模块实现方案 #include stdio.h int main() {int m, num0;for (m 1; m * m 200; m){printf(%d , m * m);num;if (num%50)printf(\n);}return 0; } 由于任务本身简单将之在一个main函数中实现后这个函数的内聚程度接近功能内聚已经相当高了就任务本身不需再进行分解。为使读者能深入理解模块质量方面的技术我们将试图将内聚程序再提高一些然后考察耦合程度不同的各种解决方案。 要提高上面解决方案中函数仅main一个函数的内聚程度我们考察程度的功能“找出完全平方数并输出”——“找出完全平方数”和“输出”这本身就是两个功能再细分输出时还有“要求5个数据在一行”的要求这些功能的实现细节都在一个函数当中可见是有余地再提高内聚程度的。 在实现的应用中几乎所有的处理都可以分解为“输入-计算-输出”的模式优秀的解决方案往往至少要将这三个模块都独立出来对于“计算”模块而言其内部不再包括输入输出专门接受输入的数据计算完成后返回结果即可。当然对于复杂的问题在各个环节上可能还需要再做分解。 下面我们探讨将“找出完全平方数输出”和“每5个数据后换行”分开实现的方案。这样的分解有助于提高内聚性与此同时分解后的两个模块间的耦合程度成为我们要关注的焦点。 现在将“找出完全平方数并输出”的功能仍放在main函数中独立成为单独的函数也可以但不必要了而“每5个数据后换行”的功能设计一个名称为format的函数它每调用一次就输出一个空格作为两个完全平方数间的分隔而每调用到第5次时输出的是一个换行。 这两个模块之间需要有一个“现在是第几次调用”的信息需要传递不可能用耦合程度最松散的非直接耦合.我们考虑数据耦合用简单形式参数传值得到方案2。 //方案2一个耦合度低但不能完成功能要求的解决方案 #include stdio.h void format(int); int main() {int m, num0;for (m 1; m * m 200; m){printf(%d, m * m);format(num);}return 0; } void format(int n) {n;if (n%50)printf(\n);elseprintf( );return; } 在这个程序结构中format与main函数的耦合程度为数据耦合。在main中定义了局部变量num在一次都未输出时置初值为0是合理的。在调用format时将num传递来的表示第几次输出第几个完全平方数的形式参数nn自增1然后再控制输出空格或换行。 然而分析和运行程序发现“每隔5个数据输出一个换行”的功能并未实现。因为形式参数n在函数format内的改变对应的实在参数num占不同的内存空间n修改的结果对num无任何的影响导致了在下一次调用时丢失了“输出的是第几个”的重要信息。 一个补救的方法是由format将变化后的n值作为返回值再传回给main函数得到如下方案3的程序 //方案3利用了返回值使耦合度增大但功能得以实现的方案 #include stdio.h int format(int); int main() {int m, num0;for (m 1; m * m 200; m){printf(%d, m * m);num format(num);}return 0; } int format(int n) {n;if (n%50)printf(\n);elseprintf( );return n; } 维持原函数返回值为void而将参数改为传地址得到下面的方案4。这个方案的耦合度更高一些但功能还是能够实现的。 //方案4传地址实现功能的方案耦合度更大 #include stdio.h void format(int*); int main() {int m, num0;for (m 1; m * m 200; m){printf(%d, m * m);format(num);}return 0; } void format(int *p) {(*p);if ((*p)%50)printf(\n);elseprintf( );return; }一定有人想到了用全局变量的解决方案。这样可以将num定义为全局变量num的生存周期不再依赖于函数调用其值也能在函数的调用之间保持不变只要其间没有另外给它赋值从而可以完成传递信息的任务。这时format因为无需参数传递可以设计为无参函数得到如下方案5的程序 //方案5耦合度最高的全局变量方案 #include stdio.h void format(); int num0; int main() {int m ;for (m 1; m * m 200; m){printf(%d, m * m);format();}return 0; } void format() {num;if (num%50)printf(\n);elseprintf( );return; } 这是解决这个问题的耦合程度最高的一个方案。将num定义为外部变量意味着如果还有其他函数num是可以被任何函数修改的当发 format 计数错误时寻找错误困难而修改后又可能会带来其他地方的错误。在这么一个短小的程序中这种方案可能尚可接受当程度的规模稍变大可能带来的问题必须高度重视。因此在实际应用中强调全局变量要慎用不是不用。 考虑到num是在format中应用的私用数据——只有format才关心这到底是第几个数据main本来都不用关心的。这样可以考虑将num定义为format中的局部静态变量得到方案6的程序 //方案6用静态局部变量耦合度偏高但封装性最好的方案 #include stdio.h void format(); int main() {int m ;for (m 1; m * m 200; m){printf(%d, m * m);format();}return 0; } void format() {static int num0;num;if (num%50)printf(\n);elseprintf( );return; } 在这里静态局部变量num的作用域是局部的定义在函数体里封装性在所有方案里是最好的从而能保证信息的隐蔽性避免其他函数无意的越权访问 不过num的生存期是全局的可以跨越函数的不同次调用在两次调用间传递信息耦合程度自己和自己的耦合要高一些 但使main函数和format函数的耦合达到了最理想的程度既保证了功能的正确又保证了局部数据的安全性表现出静态局部变量的优势。 资料直通车Linux内核源码技术学习路线视频教程内核源码 学习直通车Linuxc/c高级开发【直播公开课】 零声白金VIP体验卡零声白金VIP体验卡含基础架构/高性能存储/golang/QT/音视频/Linux内核 综上所述在解决一个问题时存在着诸多的方案。 方案1可以接受但希望提高内聚性而做出改进方案2用简单的参数传值方式实现耦合程度低但很可惜不能完成功能在其他方案中对于这个问题选择的优先顺序是 方案6、方案3 方案4 方案5 建议读者回顾前面的内容想一想这样排序的理由。 在上述探讨各个方案的过程中我们应该体会到在程序设计能力提高的过程中不断地学习新的技术懂得新的评判标准这也就是一个不断拓宽眼蜀的过程。 在稍后的练习中不妨多想一些方案也能够从专业的角度评判方案的优劣最终做到的就是出手就是最佳方案的专业水平。 原文作者迂者-贺利坚
http://www.w-s-a.com/news/47222/

相关文章:

  • 雕刻业务网站怎么做企业qq官网
  • 新华书店的做的数字阅读网站wordpress编辑器格式
  • jq做6个网站做什么好广西临桂建设局网站
  • 网站新闻图片尺寸南京网站设计公司
  • 重庆seo建站网站服务器 安全
  • 咸宁做网站的公司桂林网站建设兼职
  • 教做网站网站开发行业分析
  • 忻州网站建设培训友情链接交换形式有哪些
  • 佛山做外贸网站渠道外贸常用网站
  • 文章收录网站网站及新媒体建设办法
  • 招聘网站排行榜2021找建网站公司
  • 网站建设制作宝塔面板活动宣传推广的形式有哪些
  • 掉关键词网站敏捷软件开发流程
  • 微信小程序格泰网站建设新闻采编与制作专业简历
  • 电子商城建设网站海伦网站建设
  • 南充能够建设网站的公司有专门做设计的一个网站
  • 免费域名申请个人网站阿里巴巴运营的工作内容
  • 怎么建自己的手机网站保定电子商务网站建设
  • 系部网站建设中期检查表创建网站的公司
  • 西宁网站建设优化重庆企业的网站建设
  • 贝壳企业网站管理系统徽与章网站建设宗旨
  • 郑州网站模板动漫设计与制作设计课程
  • 在线制作网站的工具岳阳网站设计改版
  • 网站建设需要汇报哪些内容前端开发的工作内容
  • 无锡阿凡达网站建设美团app开发公司
  • 个性化企业网站制作公司深圳高端网站定制公
  • 专业深圳网站定制开发企业网站开发 流程
  • 网站建设推广的软文php网站平台
  • 如何做代刷网站长外贸网站个性设计
  • 合同网站开发 设计 后期维护如何搭建海外网络