zoukankan      html  css  js  c++  java
  • 《代码之美》第三章读后感(二)

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

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

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

  • 相关阅读:
    WinAPI: GetClassName
    Delphi 常用API 函数
    DELPHI加密字串(异或运算加密)
    delphi中获得进程列表或想要的进程(枚举进程、遍历进程)
    如何把窗体关闭到系统托盘
    让窗体接受拖放, 并获取拖过来的文件信息
    如何获取图片中第一个像素的颜色值?
    android 使用get和post将数据提交到服务器
    android 简单的读写联系人
    android ContentObserver内容观察者基本使用
  • 原文地址:https://www.cnblogs.com/tianma-0/p/4559124.html
Copyright © 2011-2022 走看看