`
febird
  • 浏览: 258897 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

怎么减少错误的发生

 
阅读更多

错误,我们暂且仅对软件开发而言。

错误的类别,暂且仅考虑接口错误实现错误

  • 接口错误
    • 一般可以分为误解失配
    • 误解

比如在一段公路入口有巨大的标识牌,上面写着:前方道路,靠左行,红灯行,绿灯停。这个大家可能觉得很荒谬,然而类似的事情在软件开发里面却层出不穷,生产方认为自己已经在文档中清楚地说明了用法和用途,然而他却没有意识到这与使用方的常识和惯例背道而驰。举个简单的例子,C 标准库里面的两个函数:

我不知道有多少人用过这两个函数,但是,大体上,应该是用 fwrite 的人多,而用 qsort 的人少。而用 fwrite 的人,大多数情况下,传递的 size 都等于 1,并且,一般情况下,size 和 count 搞反了也不会有啥大问题,除非判断了返回值。然而,一旦用多了 fwrite,并且吧 ObjectSize, ObjectCount 这个顺序当成了一个常识,再使用 qsort 的时候,就悲剧了!

还有一个例子:stl 的 range,一般表示为前闭后开的 [begin, end) 区间,如果你要搞一个前开后闭的 (begin, end] 区间,大家都会疯掉不可。我确实曾经被这样的 (begin, end] 疯掉过。

    • 失配

一般情况下,发生在版本兼容问题上。我仅举一个简单例子:在Bash3.x中,[[]] 中的正则表达式会按Bash的quoting removal 规则进行处理,也就是说对于一般的正则表达式,加单引号,双引号,和不加引号,都没有区别,然而到了Bash4.x,如果加了引号,就悲剧了!Bash4.x会把引号当成正则表达式的一部分!

    • 另一种接口错误

最近我在挤地铁时发现了另一类错误,看上去似乎不属于这两种:人很挤的时候,在地铁楼梯上,经常发现,人们走的是左边,而不是右边,稍微用心一下,就会发现这是什么原因——人们总是按贪心算法走最短路径,刚下地铁的人,会走挨地铁(车厢)的楼梯一侧,而这一侧正好是左边,上面往下走的人,却是走右边。在人流量不大的时候,这不是什么问题,然而,当人流汹涌时,造成的拥堵让大家都很郁闷。

怎么解决这个问题呢?——那就是在设计地铁站时,让贪心算法的最短路径是右边,而不是左边。再General一点,就是:设计要遵守人们的思维习惯。

在程序设计上,如果我们设计的接口符合人的思维习惯,可以大大减少错误的发生。在 C 里面,至少有两处设计违反人的直觉,不过还好,这两处早被 deprecate 了:

      1. 函数的默认返回值为 int,而非 void
      2. f() 表示可接受任意个参数,返回值为 int 的函数。
  • 实现错误

一般情况下,就是指我们程序的逻辑错误

分享到:
评论

相关推荐

    Oracle错误一览表

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其在运行过程中可能会遇到各种错误。"Oracle错误一览表"是一个...在实际工作中,定期进行数据库维护、性能监控和安全检查,也是避免和减少错误发生的重要手段。

    delphi程序错误编译手册

    此外,它还可能包含有关优化代码和避免常见陷阱的提示,以减少错误发生的可能性。 最后,手册可能包含一些案例研究和常见问题解答,通过实际例子帮助开发者熟悉处理问题的流程,提升他们的故障排除能力。 总而言之...

    VC2008中IE8脚本错误解决工具.rar

    4. **安全设置调整**:可能调整IE8的安全设置,如禁用脚本调试,或者调整安全区域设置,以减少错误发生的可能性。 5. **更新补丁**:可能包含微软发布的针对IE8的修复补丁,这些补丁解决了已知的脚本执行问题。 6....

    Windows 错误码整理

    在IT领域,特别是针对Windows操作系统,错误码是系统在运行过程中遇到问题时返回的一种状态代码,用以指示具体的错误类型。...此外,保持系统和应用程序的最新更新,以及定期维护硬件,可以显著减少错误发生的概率。

    Oracle常见错误代码的分析与解决

    Oracle数据库在运行过程中可能会遇到各种错误,这些错误通常以特定的错误代码形式呈现,给数据库管理员带来困扰。...在日常操作中,定期监控数据库状态、优化表空间管理和及时备份,都是防止和减少错误发生的重要措施。

    软件工程实践中的错误处理与异常处理3.pptx

    - **断言**:检测不应该出现的情况,预检查减少错误发生的可能性。 - **重试机制**:处理偶发错误。 **实施错误处理策略** - **统一的错误信息**:定义统一的错误代码和错误信息。 - **清晰易懂的错误信息展示界面...

    cpp-nocoredump可以捕获指针异常内存溢出等错误的代码

    - **持续优化**:基于nocoredump提供的信息,不断优化代码,减少错误发生的概率。 总之,cpp-nocoredump是一个实用的工具,它可以帮助开发者在遇到致命错误时保持程序运行,并提供有价值的调试信息。正确理解和使用...

    cognos错误整理

    在处理Cognos错误时,理解错误代码的含义至关重要,同时,保持Cognos及其依赖组件的更新,以及优化服务器和客户端的配置,都是减少错误发生的有效手段。此外,及时记录和分享遇到的问题及解决方案,可以帮助团队成员...

    基于java的线程错误捕获工具 CheckThread.zip

    这些工具可以帮助避免竞态条件和死锁,减少错误发生的可能性。 6. **日志记录**: 为了有效地捕获和分析错误,日志记录库(如Log4j、SLF4J或Java内置的java.util.logging)的应用必不可少。CheckThread工具可能包含...

    opal-memory-errors.rar_opal

    6. 调试支持:对于开发和调试人员,OPAL提供的错误处理接口可以帮助他们深入理解错误发生的原因,并优化系统以减少错误发生的可能性。 在“opal-memory-errors.c”这个源代码文件中,我们可以期待看到实现这些功能...

    防呆法的功能.pdf

    防呆法,又称错误预防法或防错法,是一种通过设计消除错误或者减少错误发生的概率,以确保产品或服务质量和操作安全的方法。这种方法最早由日本工程师新乡重夫提出,广泛应用于制造业、医疗、服务等行业。下面将详细...

    化妆品连锁店开门迎客前的工作准备.pptx

    在IT行业中,尤其是在系统设计和运营中,"Human Error"(人为错误)是一个重要的考虑因素。...通过理解错误的形态,采取故障安全措施,并提供适当的培训和支持,我们可以最大限度地减少错误发生并减轻其潜在影响。

    ccs5000系列的解决出错常用知识点

    3. **重构代码结构**:对于复杂的项目,重新组织代码结构,如合理分隔函数和模块,可以使符号管理更加清晰,减少错误发生的可能性。 4. **定期进行代码审查**:团队内部的代码审查不仅有助于发现潜在的错误,还能...

    Python与Excel:解锁数据处理的新世界.pdf

    excel使用技巧大全:随着业务场景的日益复杂化,传统的Excel操作方式逐渐暴露出效率低下的问题。...通过Python自动化处理Excel文档,不仅能节省时间,还能减少错误发生概率,让数据处理工作变得更加轻松高效。

    IE七大手法(繁体版台湾高级企业专用).pptx

    - 缓解影响:通过设计减少错误发生后的影响。 这些方法结合运用,能够有效提升生产效率,减少错误,实现工作流的优化。在实际应用中,企业可以根据自身情况进行选择和定制,以达到最佳的改善效果。

    数据库管理 - Visual FoxPro 表的创建与维护方法及应用场景解析-可实现的-有问题请联系博主,博主会第一时间回复!!!

    其他说明:通过对具体实验案例的详细讲解,读者不仅可以学习到如何有效地管理数据库,还能了解常见错误处理的方法及其背后的逻辑,有助于提高编程效率和减少错误发生率。 -可实现的-有问题请联系博主,博主会第一...

    Grayp_graycode_

    在信号传输、数据存储和计算机科学的多个领域都有广泛应用,因为它能有效地减少错误发生的可能性。在标题"Grayp_graycode_"中,"Grayp"可能是对格雷码的一种特定变体或者表示方式,但具体含义没有明确给出,通常我们...

    基于java+swing+mysql图书销售管理系统(含论文).rar

    项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保...3.尽可能的让用户去选择,而不是输入,减少错误发生的概率。 4.增加主要功能的快捷键,增加操作的简易性。

    基于CAN Bus MCU的电梯控制器和监测应用设计

    电梯控制器和监测系统采用CAN Bus,可以有效简化线路设计,减少错误发生的可能性,提高系统的稳定性和效率。 CAN Bus的核心优势体现在以下几个方面: 1. **抗干扰能力**:采用双线差动传输,即使在电气条件不佳的...

    21春南开大学《第一次把事情做对(麦课)》在线作业-1参考答案.docx

    改进工作过程:这是预防错误的重要方法之一,通过优化流程减少错误发生的可能性。 - C. 找出错误发生的原因:这是预防的核心,只有找到原因才能采取针对性措施防止错误再次发生。 - D. 及时改正:改正错误也是...

Global site tag (gtag.js) - Google Analytics