6.3 方法组合
定义新方法后,可将其用于表达式中或用来创建其他方法。例如,假设有人向你提供了两个点——圆心和圆周上的一点,并要求你计算这个圆的面积。那么我们可以假设圆心坐标存储在变量 xc 和 yc 中,而圆周上那个点的坐标存储在 xp 和 yp 中。
第一步要做的是计算出这个圆的半径,即两个点间的距离。所幸我们已经有执行这种计算的方法 —— distance:
double radius = distance(xc, yc, xp, yp);
第二步是根据得到的半径计算圆的面积。我们也有执行这种计算的方法 —— calculateArea:
double area = calculateArea(radius);return area;
将这些代码放到一个新的方法中,结果如下:
public static double circleArea(double xc, double yc, double xp, double yp) {double radius = distance(xc, yc, xp, yp);double area = calculateArea(radius);return area;}
临时变量 radius 和 area 对开发和调试来说很有用,但是程序能正确运行后就可以组合方法调用,从而让程序更简洁:
public static double circleArea(double xc, double yc, double xp, double yp) {return calculateArea(distance(xc, yc, xp, yp));}
这个示例演示了功能分解(functional decomposition)的过程,即将复杂的计算分成简单的方法,分别对这些方法进行测试,然后再组合这些方法来执行计算。这种做法可缩短调试时间,并且编写出来的代码准确度更高且更容易维护。
