zoukankan      html  css  js  c++  java
  • 大小写引发的悲剧

    我们知道,在Windows下是不区分大小写的,比如文件名,文件夹名,命令行参数以及注册表表项等等。这在提供我们方便的同时也把我们培养的不那么严谨,出错也就在所难免。

    这是最近发生在我们公司的两个真实的案例。

    1. Bin目录和bin目录

    软件所有的DLL都是在Bin目录下的,有同事在fix一个defect的时候,需要判断某个DLL是否在这个Bin目录下,遗憾的是,这个判断他是用case sensitive的方式做出的,于是当目录名为bin而不是Bin时,该判断失败并在一系列后续操作后导致软件crash。而此时,软件的beta版本已经发布了。最后,我们只能以附加文档的方式告诉用户:如果发现这个问题,请强制把bin改为Bin。

    2. /Install 和/install

    我们有一个产品在安装时会调用一个命令进行注册:registerxxx.exe /install。但是该注册命令的实现中,对 /install这个命令行的判断却是case senstive的。于是,当我们安装包的制作人试图以首字母大写这种比较美观的方式调用此命令时:registerxxx.exe /Install,悲剧发生了。于是,我们只能在每次装完后自己手工注册~~~

    习惯了windows下这种不区分大小写(case-insensitive)的工作方式,我们已经被培养的对大小写不敏感了。这样的问题相对来讲是比较难debug的:以至于眼睁睁的把问题行高亮在你面前,你也可能会视而不见 - 这本来就是对的嘛。是的,我们的经验给了我们这个十分自信的假设:大小写不同是没问题的。

    福尔摩斯有句名言:There is nothing more deceptive than an obvious fact。没有比一个你所认为的事实更具有欺骗性的了。因为你错误的假设把它排除在了问题域之外,这成为了你意识的盲点。因此,很多时候在debug一个问题的时候,不要做任何假设,先站在一个比较宏观的角度检查一些基本的问题:插头插了吗?对象注册了吗?代码是最新的吗。。。大小写一致了吗?

  • 相关阅读:
    wxPython跨线程调用
    安卓开发24:FrameLayout布局
    URAL 1081
    [置顶] Hibernate运行机理
    [置顶] Hibernate的一个经典异常
    poj1190 生日蛋糕 dfs
    [置顶] 自己写代码生成器之生成Dal层代码(获取数据库所有表名称)
    修改mysql数据存储的地址
    拖延心理学
    DeepLearnToolbox使用总结
  • 原文地址:https://www.cnblogs.com/baiyanhuang/p/1730721.html
Copyright © 2011-2022 走看看