《代码之美》第三章读后感(二)

本章提到测试的主要目的是逐步建立,不断加强并再次确认我们对于代码的信心:即代码正确并高效地实现了功能。文章认为,最漂亮的测试是那些能将我们的信心最大化的测试,这个信心就是代码的确实现了它被要求的功能,并将一直保持这一点。由于代码不同方面的属性需要不同类型的测试来验证,所以对于“漂亮”的评判准则也不是固定的。书中考查了能使测试漂亮的三种方法。

1测试因简单而漂亮

2 测试因揭示出使代码更优雅,更可维护和更易测试的方法而漂亮

3 测试因其深度和广度而漂亮

关于二分法著名的bug的Java实现

public static int buggyBinarySearch(int[] a, int target) {
    int low = 0;
    int high = a.length - 1;
    while (low <= high) 
    {
        int mid = (low + high) / 2;
        int midVal = a[mid];
        if (midVal < target)
            low = mid + 1;
        else if (midVal > target)
            high = mid - 1;
        else
            return mid;
    }
    return -1;
}

读到这感觉很惭愧,今天才知道以前写得二分法都是错的。

  如果low和high的和大于Integer.MAX_VALUE,(int mid = (low + high) / 2;计算就会发生溢出,使它成为一个负数,然后被2除时结果仍是负数。书中提到了解决的方法,int mid = low + ((high - low) / 2); 或者int mid = (low + high) >>> 1;代码确实是值得我们去精雕细琢的,关于程序代码数值的边界问题更应该时时挂在脑海,书中对冒烟测试,边界测试,随机测试,都做了一定的说明,也帮助我对测试有了进一步的了解,意识到了它重要意义,和真正漂亮代码的来之不易。

  “如果你的测试全部通过,那常常说明你的测试不够好。”对于现在的我来说这句话深表同感,因为平时写出的代码几乎不测试,只要几次成功就算结束了,而我们有时需要的是从另一个角度,用挑剔的眼光去发现问题,只有这样才能够获得更大的进步。

posted @ 2015-06-07 21:20  菜鸟骑士  阅读(311)  评论(0编辑  收藏  举报