调试器,敏捷过程的害群之马

原创 2003年12月02日 09:54:00

当你习惯了测试驱动的开发(Test-Driven Development,TDD)之后,你会发现自己越来越少地使用调试器(debugger)——如果你发现程序里有什么问题,你不应该用调试器去抓bug,而是应该用一个单元测试用例来揭示问题的所在。由于存在细粒度、完整覆盖的单元测试用例,每个bug都相当清晰,于是很少会需要各种巧妙的调试手段了。

——————————

Uncle Bob's Software Craftsmanship Corner

Debuggers are a wasteful Timesink

by Robert C. Martin
November 29, 2003
Summary
As debuggers have grown in power and capability, they have become more and more harmful to the process of software development.

Debuggers have become immensely powerful. A good debugger is a very capable tool. With it, an experienced developer can step through very complex code, look at all the variables, data structures, and stack frames; even modify the code and continue. And yet, for all their power, debuggers have done more to damage software development than help it.

Since I started using Test Driven Development in 1999, I have not found a serious use for a debugger. The kinds of bugs I have to troubleshoot are easily isolated by my unit tests, and can be quickly found through inspection and a few judiciously placed print statements.

I teach a lot of classes in C++, Java, C#, TDD, XP, Patterns, etc. In those classes I often have the students write code. It is not unusual for me to find a student with his or her nose buried in a debugger, painstakingly stepping from line to line, examining variables, setting breakpoints, and generally wasting time. The bug they are tracking could be found through simple inspection of the code.

I consider debuggers to be a drug -- an addiction. Programmers can get into the horrible habbit of depending on the debugger instead of on their brain. IMHO a debugger is a tool of last resort. Once you have exhausted every other avenue of diagnosis, and have given very careful thought to just rewriting the offending code, *then* you may need a debugger.

组织敏捷之路上的七点体会

1,专门的机构或专人来推进组织级敏捷,可能的机构名称有:敏捷中心、卓越中心、过程改进部、SEPG、质量部、运营改善部、PMO、Delivery Excellence;可能的专人有:过程总监、质量总监、...
  • zhangmike
  • zhangmike
  • 2014年06月20日 07:46
  • 2892

软件过程与方法---课堂总结3 第四章 敏捷过程模型

第四章 敏捷过程模型 (1)敏捷软甲开发宣言(2001年,敏捷联盟)    个人和交互重于方法和工具     --Individuals andinteractions over processes ...
  • muzilanlan
  • muzilanlan
  • 2016年01月07日 15:34
  • 1705

异常处理的基本过程

因为有多种异常,系统首先判断异常是否应发送给目标程序,如果应该发送,并且目标程序正处于被调试状态,则系统挂起程序,填写如下结构: typedef  _EXCEPTION_DEBUG_INFO { ...
  • NightStarSoul
  • NightStarSoul
  • 2014年05月12日 22:12
  • 380

敏捷开发流程总结

Agile——敏捷开发,作为CMM神话崩溃后被引入的一套新的软件开发模式,这几年来被广泛引起关注,并被寄予厚望。敏捷开发在其他业界的应用是否理想不得而知,但以下总结了我所在公司的敏捷开发试验,希望可以...
  • cym492224103
  • cym492224103
  • 2015年09月22日 10:02
  • 8708

敏捷开发过程的几个关键点

---CodeReview ---ScrumMeeting
  • shmiluwei
  • shmiluwei
  • 2014年07月01日 11:02
  • 1546

敏捷开发与个人管理

1、概论         敏捷开发,其实道理很简单,但是太多的事情是道理简单却做不到。         敏捷开发(Agile)的核心是去中心化,扁平化结构,拥抱变化,习惯不确定性,当然,还有最...
  • qtlyx
  • qtlyx
  • 2016年07月11日 16:34
  • 602

敏捷开发——Scrum核心

在上篇博文中,博主主要对教授课程中所透露的现代开发热点词汇进行了总结和介绍。本文将分享自己对敏捷开发的认识,和实现敏捷开发思想的核心方法。 敏捷开发: 一、什么是敏捷开发?        Agi...
  • Daybreak1209
  • Daybreak1209
  • 2015年08月21日 20:48
  • 1110

项目级敏捷流程中的角色说明与关键职责

项目级敏捷定义:项目级敏捷指产品TR2完成系统设计后,在TR2-TR4A范围内,具有迭代、持续集成和自适应特征的软件开发模式。项目级敏捷聚焦单个项目组或多个项目组协同的软件开发过程和能力改进,对IPD...
  • zj0910
  • zj0910
  • 2014年03月27日 22:28
  • 2282

浅谈敏捷开发和迭代开发中的建模

软件开发历经几十年的变革,各种开发方法层出不穷,各有利弊,随着开发项目的各种框架的成熟,敏捷开发和迭代开发是非常常见的开发方式,两者也经常一起被融合使用。那么如何在我们的软件开发过程中更好的结合这两种...
  • aswallow0323
  • aswallow0323
  • 2016年09月07日 18:13
  • 581

敏捷开发有什么好处?

原文地址:敏捷开发有什么好处?作者:苗得雨 软件开发方法一直处在不断发展过程中。在诸多方法中,敏捷开发以其能持续满足不断变化的用户需求正在受到越来越多人的重视,从中小项目开始进入大型开发项目,近几年来...
  • u011741233
  • u011741233
  • 2013年08月19日 18:21
  • 3603
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:调试器,敏捷过程的害群之马
举报原因:
原因补充:

(最多只允许输入30个字)