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

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

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;代码确实是值得我们去精雕细琢的,关于程序代码数值的边界问题更应该时时挂在脑海,书中对冒烟测试,边界测试,随机测试,都做了一定的说明,也帮助我对测试有了进一步的了解,意识到了它重要意义,和真正漂亮代码的来之不易。

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

转载于:https://www.cnblogs.com/tianma-0/p/4559124.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值