讲完了高质量的类,第七章就接着讲了高质量的函数。
函数设计目标
要创建函数的原因像创建类的原因一样有很多:降低复杂性;引入便于理解的抽象;避免重复的代码;支持子类;隐藏顺序执行的过程;隐藏指针操作;增加可移植性;简化复杂的布尔逻辑;提高性能等等,最核心的也还是降低复杂性。有时候我们不要因为一个函数只有一行代码就不去创建它,有可能这一行代码会在很多地方重复使用,而万一哪一天你要改它,一个杯具就此产生。
设计函数的目标就是要达到高内聚性(cohesion),最高的内聚就是功能性的内聚(functional cohesion),也就是一个函数做一件事,并且只做那一件事。这样的函数单纯,简单,会降低复杂性。比如函数Cosine(),它就只求余弦值,就是很好的功能内聚。其实叫功能内聚也好,高内聚也好,什么叫法都无所谓,关键是理解这背后体现的思想,尽量向一个函数做且只做一件事靠拢。
函数名
做到了高内聚,还要给函数取个好名字。什么样的名字才叫好呢?一句话就是能够描述函数所做的所有事情。像Cosine这样的函数名就很好,言简意赅,一目了然。所以高内聚的函数很好取名字。具体来说呢还有一些规则:
- 第一,不要用含义模糊的动词