高质量的子程序

简介

  1. 什么是子程序?
    子程序是为实现一个特定的目的而编写的一个可被调用的方法(method)或过程(procedure)。

创建子程序的正当理由

  1. 降低复杂度
    使用子程序来隐藏一些信息,这样你就不必再去考虑这些信息了。
    当条件判断、内部循环的嵌套层次很深时,就意味着要使用子程序了!将嵌套的部分提取出来,写一个子程序,降低复杂度。
  2. 用子程序的名字说明代码
    把一段代码放入一个命名恰当的子程序内,是说明这段代码用意最好的方法之一。
def get_hash(msg):
    md5 = hashlib.md5()
    md5.update(msg.encode('utf8'))
    return md5.hexdigest()
password = 12345

hash_password = get_hash(password)  # 可读性增加
  1. 避免代码重复
    子程序中也可能有相同的代码。
    解决一:把相同的代码写一个类,然后让子程序继承。有差异的代码就用派生方法去添加。
    解决二:将相同的代码放入函数,然后调用这个函数。
  2. 隐藏顺序
    把处理事件的顺序隐藏起来是一个好主意。比如,如果一个程序通常都是先从用户那里获取输入,然后再从一个文件中读取辅助数据。那么这两个操作的子程序,都不应该依赖另外一个子程序是否已经执行。
    可以将这两个子程序放到一个子程序中封装起来,将执行顺序隐藏起来,这样比让这些信息在系统到处散布要好的多。
  3. 隐藏指针操作
    指针操作的可读性通常都很差,而且容易出错。
  4. 提高可移植性
    可以用子程序来隔离程序中不可移植的部分,从而明确识别和隔离未来的移植工作。
  5. 简化复杂的布尔判断
    image
  6. 改善性能
    image
  7. 不一定非要确保子程序都很小

似乎过于简单而没必要写成子程序的操作

  1. 小的子程序有许多优点
    比如关于一些计算的代码,这些代码通常几行就可以解决。但是建议还是写成子程序。因为可能会在很多地方用,而且计算公式也有扩展的可能性。

在子程序层上设计

内聚性

内聚性:对于子程序而言,内聚性是指子程序中各种操作之间联系的紧密程度。
一个子程序中各种操作之间的练习有多强?
我们的目标是让每一个子程序,只把一件事做好,不做其他事情!
image

  1. 功能的内聚性
    即一个子程序只执行一项操作。
  2. 顺序上的内聚性
    子程序内包含需要按特定顺序执行的操作,这些步骤需要共享数据,而且只有在全部执行完毕后才完成了一项完整的功能。
    image
    image
posted @ 2022-11-09 23:07  passion2021  阅读(70)  评论(0编辑  收藏  举报