《代码大全2》阅读笔记四——高质量的子程序

要谈论到高质量的子程序之前,要先知道什么是子程序?

子程序是计算机科学中一项最为重大的发明,是迄今为止发明出来用以节约空间和提高性能的最重要的手段。

在阅读完这一章节之前,我认为子程序可以节省空间和提高性能的最大体现就是避免了重复代码,将重复的代码写进一个子程序里面,使用的时候直接调用就行。

但实际上创建子程序的正当理由主要为:

  • 降低复杂——将一个程序的复杂度降低,即提前写好几个子程序,在使用子程序时,直接调用即可
  • 引入中间、易懂的抽象
  • 避免代码重复——将需要使用的相同的代码写进一个子程序,使用时再调用
  • 支持子类化
  • 隐藏顺序——把处理事件的顺序隐藏起来
  • 隐藏指针操作——避免出现读不懂指针的处境
  • 提高可移植性——可以更方便的移植某些代码
  • 简化复杂的布尔判断
  • 改善性能
  • 确保所有子程序都很小

总之创建一个子程序的好处有好多,想要解决以上问题时,可以通过创建子程序来解决

在子程序层上的设计

在谈对于子程序层的设计之前,先聊一下内聚性。内聚性是指子程序中各种操作之间联系的紧密程度。

功能的内聚性——一个子程序仅执行一项操作,即addData()等一系列的子程序

顺序的内聚性——子程序内包含需要按特定顺序执行的操作,这些步骤需要共享数据,而且只有在全部执行完毕后才算完成一项完整的功能

通信的内聚性——指一个子程序中的不同操作使用了同样的数据,但不存在其它任何联系。

临时的内聚性——临时需要放在一起操作的子程序

过程上的内聚性——子程序上的操作按着一定的顺序进行,比如说某个程序获得员工的姓名、年龄、工资等,需要与咱们输入的数据保持一致。

逻辑上的内聚性

在这些内聚性里面。最重要的就是功能的内聚性,学好这一类可以在很多代码里面用到

好的子程序的名字

一个好名字可以让我们清晰的了解到子程序的作用

子程序的一些命名指导:

  • 描述子程序所做的所有的事情
  • 避免使用无意义的、模糊或表达不清的动词
  • 不要仅通过数字来形成不同的子程序名字
  • 根据需要确定子程序名字的长度
  • 给函数命名时要对返回值有所描述
  • 给过程起名时使用语气强烈的动词加宾语的形式
  • 准确使用对仗词
  • 为常用操作确立命名规则

对于子程序的长度,经过研究表明,200行以下是一个最佳的选择

如何使用子程序参数

按照输入——修改——输出的顺序排列参数——不要随机使用字母来表示参数

如果几个子程序都用了类似的一些参数,应该让这些参数的排列顺序保持一致

保证实参和形参相匹配

如何使用函数

对于函数而言,我们应清楚的明白什么时候使用函数——只用在某个子程序的主要目的是返回其名字所描述的特定结果时,才应该使用函数

设置函数的返回值

谨慎使用宏定义:宏定义在许多方面上都有一些问题

 

posted @ 2022-10-30 20:46  伽澄  阅读(115)  评论(0)    收藏  举报