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


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

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

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

  • 相关阅读:
    [RxSwift]4.4、Operator
    [RxSwift]4.3.6、ControlProperty
    [RxSwift]4.3.5、Variable (已弃用)
    [RxSwift]4.3.0、Observable & Observer 既是可监听序列也是观察者
    [RxSwift]4.2.2、Binder
    [RxSwift]4.2.1、AnyObserver
    Java重温学习笔记,Java8新特性:接口的默认方法
    Tomcat下,MySQL连接池的配置和使用(Tomcat9,MySQL5.5)
    MyEclipse2020配置JDK1.8及Tomcat9
    Java重温学习笔记,Java7新特性
  • 原文地址:https://www.cnblogs.com/tianma-0/p/4559124.html
Copyright © 2020-2023  润新知