Skip to content

2.7 例子

让我们深入探讨这四个代码示例,它们展示了如何计算给定半径的圆的周长、面积以及相应球体的体积,同时突出了在代码编写过程中逐步提升计算精度、可读性和可维护性的改进。

源码 1:基础计算

c
#include <stdio.h>

int main()
{
    double r = 3.67, c, s, v;
    c = 2 * 3.1415926 * r; // 圆周长的计算:C=2πr
    s = 3.1415926 * r * r; // 圆面积的计算:A=πr^2
    v = 4 / 3 * 3.1415926 * r * r * r; // 球体体积的计算,注意这里4/3使用整数除法,结果不准确
    printf("c=%f\ns=%f\nv=%f\n", c, s, v);
    return 0;
}
  • 问题: 使用整数除法计算体积,导致结果不精确。

源码 2:修正体积计算精度

c
#include <stdio.h>

int main()
{
    double r = 3.67, c, s, v;
    c = 2 * 3.1415926 * r; // 圆周长
    s = 3.1415926 * r * r; // 圆面积
    v = 4.0 / 3.0 * 3.1415926 * r * r * r; // 使用浮点数进行除法,修正体积计算精度
    printf("c=%f\ns=%f\nv=%f\n", c, s, v);
    return 0;
}
  • 改进: 使用4.0 / 3.0确保了浮点除法,体积计算更准确。

源码 3:提高代码可读性

c
#include <stdio.h>
#include <math.h>

int main()
{
    double r = 3.67, c, s, v;
    c = 2 * 3.1415926 * r; // 圆周长
    s = 3.1415926 * pow(r, 2); // 使用pow函数提高可读性
    v = 4.0 / 3.0 * 3.1415926 * pow(r, 3); // 使用pow函数计算r的立方
    printf("c=%f\ns=%f\nv=%f\n", c, s, v);
    return 0;
}
  • 改进: 通过使用pow函数,代码更易读,表达式更直观。

源码 4:增强可维护性

c
#define PI 3.1415926 // 定义PI常量,提高代码可维护性
#include <stdio.h>
#include <math.h>

int main()
{
    double r = 3.67, c, s, v;
    c = 2.0 * PI * r; // 使用PI常量
    s = PI * pow(r, 2); // 使用PI常量和pow函数
    v = 4.0 / 3.0 * PI * pow(r, 3); // 使用PI常量和pow函数
    printf("c=%f\ns=%f\nv=%f\n", c, s, v);
    return 0;
}
  • 改进: 使用PI宏定义代替硬编码的 π 值,提高代码的可读性和可维护性。未来修改 π 的值将更为简便。

综合分析

  • 精度:从源码 1 到源码 2,我们通过使用浮点数进行除法来修正体积的计算精度。
  • 可读性:源码 3 通过引入math.h库和使用pow函数进一步提高了代码的可读性。
  • 可维护性:源码 4 通过定义PI常量,提高了代码的可维护性,使得未来的修改更加简单高效。

这些渐进式的改进展示了软件开发中重要的几个方面:准确性、可读性和可维护性。每一步改进都针对性地解决了前一版本的问题,从而提升了最终程序的质量和效率。