zoukankan      html  css  js  c++  java
  • 软件开发最重要的是可测性


    有人问我软件开发最重要的是什么?

    答曰:可测性。


    如何定义可测性?

    答曰:程序一旦有问题就会显著暴露出来的特性。


    这是否会影响程序的稳定性?

    答曰:错的就是错的,错误一旦被隐藏,就会成为长久的暗疮,并在未来带来各种稀奇古怪的问题,将增加长久的维护成本。如果有问题就当时当地的暴露出来,就会被解决掉,从而使得软件自内而外的健康,逻辑正确。这样的软件是易于长期维护的。


    这是否会增加开发成本?

    答曰:有问题就暴露,确实会在开发初期带来一些麻烦,因为程序动辄assert或者coredump,迫使开发者不断修复各种问题。但是一旦模块稳定了,就是自内而外的逻辑正确,没有隐藏任何错误,这对长期维护而言,是降低了成本。因为逻辑正确的东西,不会引起各种稀奇古怪的问题。而稀奇古怪的问题是最消耗维护成本的。


    如何增加程序的可测性?

    答曰:依据不同的语言和工具有不同的做法。总体而言是做逻辑正确的事情,不要怕return false,不要怕crash,不要用bug数量来衡量kpi。对C/C++而言,可以对各种输入做检查,然后对各种意外做出反应和记录(比如写日志,assert false,return false,甚至退出);对java和c#而言,就是及时return false、抛exception以及不要乱吃exception(实际上我建议只在ui层吃exception,因为正常运行的时候,底层通常不该出异常的)。



  • 相关阅读:
    Java基础——数组复习
    JavaScript 笔记总结
    HTML总结
    css代码添加背景图片常用代码
    Java 并发包之线程池综述
    Java 并发之Concurrent 包综述
    AQS 框架之 Lock 接口
    AQS 框架之 LockSupport 线程阻塞工具类
    JAVA 锁之 Synchronied
    ThreadLocal 线程本地变量
  • 原文地址:https://www.cnblogs.com/hehe520/p/6330381.html
Copyright © 2011-2022 走看看