首页 > 代码库 > 《Code Complete》ch.7 高质量的子程序

《Code Complete》ch.7 高质量的子程序

WHAT?

  子程序(routines)是为实现一个特定目的而编写的可被调用的方法或过程。在C++中是函数(function),在Java中是方法(method),在VB中是函数过程(function procedure)或子过程(sub procedure)。

WHY?

  • 降低复杂度
  • 引入中间、易懂的抽象
  • 避免代码重复
  • 支持继承、重写
  • 隐藏实现细节
  • 提高可移植性
  • 改善性能(对明确的子程序进行优化)

HOW?

  • 内聚性(cohesion):是指子程序中各种操作之间联系的紧密程度
  • 编程的目标是让每一个子程序只完成一件事情
  • 内聚性的几个层次,由高到低排列
    • 功能内聚(functional cohesion):最强、最好的内聚,只完成一件事情
    • 顺序内聚(sequential cohesion):子程序做了至少两件事情,且这两件事情有分先后顺序
    • 通信内聚(communicational cohesion):子程序做了至少两件事情,它们使用了同样的数据
    • 临时内聚(temporal cohesion):将一系列操作放到一起执行,如startUp()、shutDown(),应该由这些程序去调动其它子程序,而不是把实现都写在这些程序中
    • bad:过程内聚(procedural cohesion):子程序中操作必须按照特定顺序进行
    • bad:逻辑内聚(logical cohesion):依靠输入参数的标识位来决定执行哪一段逻辑
    • bad:巧合内聚(coincidental cohesion):子程序中各个操作没有关联,一团乱麻