MyException - 我的反常网
当时方位:我的反常网» 归纳 » 10个调试和排错的小主张

10个调试和排错的小主张

www.x8vin4.com  网友共享于:2015-02-04  阅读:40122次

 在空白的文本修改器里翻开一个簇新的文本,没有一行代码,呈现在眼前的是一个充满了无限或许和期望的项目。可是,当数千行的代码写完之后,整个项目由于bug的呈现而被压垮了,更甭说添加什么新功用了...这也许是对程序员的最大冲击,在丰满的热心上浇了一盆冷水。其实,最好的软件程序员当然知道怎样去发现并修正这些bug,在刚开始编程的时分就经过软件工程的最好办法来下降bug的呈现概率。

 
几乎没有哪个程序员能够写出一个bug都没有的代码,可是解决办法总是比困难多得多。多实践和坚毅的决计是成功的要害,这样才干够写出清洁代码,保证软件体系的可靠性。
 
 
调试和排错主张
 
 
 
下面一同来看看这些能够打压bug的东西箱。
 
1. 输出句子
 
代码调试的首要东西便是刺进可靠地、实在的输出句子。当输出句子数量巨大且不易于办理的时分,在输出句子里恰当运用记载体系,这能够说是一个等效的好计划。许多编程言语里都装备了现成的类库,例如在Python里构建的记载库。
 
输出句子是程序员查看数据值和变量类型最快、最简略和最直接的办法。高效的输出句子能够协助程序员经过一段代码来盯梢数据流,并快速辨认bug源头。尽管先进的调试东西有许多,可是假如你想调试一段代码的话,这个一般的输出句子的办法应该是程序员最早考虑的办法。
 
2. 调试器
 
源代码调试器采用了输出言语办法里的逻辑推理。这样能够让程序员一行一行的单步履行代码,一同监测从变量值究竟层虚拟机整个状况的一举一动。其他,大部分的编程言语都具有多个调试器,能够供给不同的功用,包含图形接口、停止程序的断点设置、履行环境内部恣意代码的施行。
 
在许多状况下,调试器能够说是大材小用了,但假如合理运用的话,调试器肯定是一款高功率的东西。更多调试器的功用请看Python调试器:pdb。
 
3. Bug盯梢体系
Bug盯梢体系
在一些比较严峻的软件项目里,运用bug盯梢体系是很有必要的。假如没运用bug盯梢器,最典型的状况便是程序员要收拾以往的邮件或许是谈天记载来查找bug,更糟糕点儿的便是程序员底子不记得其它东西,形象里只需一点bug的文档。一旦这种状况发作,bug将必定充满着整个代码编程,愈加严峻的是,想要辨认出这些bug并确认它们的方位是很难的。
 
一个简略的文本文件在项目里能够作为开始的bug盯梢体系。跟着代码库的不断添加,bug衍生出一个文本文件并不需求太长的时刻。有许多商业和开源的bug盯梢软件供给的解决计划都是能够考虑的,挑选哪一个bug盯梢软件首先要清晰的部分便是要保证在编程项目里,那些非程序人员能够快速运用这个bug盯梢体系。
 
4. Linter
 
在某些编程言语里,Linter能够履行对代码的静态剖析,以便在代码编写和运转之前辨认出问题区域;在一些其它编程言语里,Linter东西关于语法查看和增强风格是很有协助的。编程的时分在修改器里翻开一个Linter程序,或许是在代码编写和运转之前经过Linter传递代码,这些都有利于程序员在运用软件之前发现并纠正更多的过错。因而,运用Linter能够帮你在节约宝贵时刻的一同揪出因语法过错、打字过错或数据类型过错而引起的bug源头。
 
想要知道什么样的Linter最适合你运用,看看Python的Linter东西:Pyflakes。
 
5. 版别操控
 
任何一个严峻的软件工程项目里都不应该疏忽运用版别操控体系。举例而言,像Git,Mercurial和SVN这类的版别操控答应不同的代码库版别在不同的基础上是能够分隔的。
 
不同的操控版别能够被合并到一同,因而,多个程序员能够同一时刻运转同一个代码库。版别操控在代码排错里相同有着无足轻重位置,能够让程序员回滚修正较早版其他代码,尽或许在过错呈现之前,在代码库里对过错进行修正。
 
6. 模块化
 
短少架构的代码是难以修正bug的首要源头。只需代码易于了解,并且理论上行得通,那么关于程序员来讲,找到并快速修正bug并不是什么扎手的作业。另一方面,越是重要的代码呈现过错的几率就越大,找到这个过错相对也就比较困难。
 
规划软件的组件常常需求考虑一点便是所谓的代码模块化,代码模块化能够协助程序员更好的用两种办法来了解软件体系。榜首,模块化能够创造出必定层次的笼统感,在没有彻底了解一切细节的状况下也能幻想出体系的模型。比方,程序员正在构建一个商业体系,或许会考虑到信用卡处理模块,然后调查这个模块和其他代码有什么联络,底子不必考虑信用卡处理模块的一切具体内容。第二,模块的具体阐明,这个具体阐明是不会和其他模块内容混杂的,就像每个卡只需一个卡号是相同的。
 
7. 自动化测验
 
单元测验和其它类型的自动化测验跟模块化是有很大相关的,能够说是相辅相承。自动化测验便是一段代码用特别的输入值来运转软件,以此来检测程序运转是否和预期的相符合。
 
单元测验首要是用来检测单个功用的功用性,但是功用测验是用来查看特别的程序功用,并且结合单元测验来查看软件体系的全体部分。有许多测验结构能够用来编写测验程序,并且大部分受欢迎的测验结构都是由Kent Bent编写的JUnit类库衍生而来的,Kent Bent是“测验驱动开发办法”最早的支持者之一。 Python规范类库包含一个JUnit的Python版别,称之为PyUnit或许unittest的单元测验结构。
 
8. 泰迪熊办法(橡皮鸭调试)
泰迪熊办法
 
在软件编程界,就不得不说到传奇人物Brain Kernighan和Rob Pike,泰迪熊调试法源于一个大学计算机中心,在这里,学生们遇到奥秘bug的时分就能够先把问题解说给这只摆在桌子上的泰迪熊听,然后才干向教师或助教求助。所以,有的时分只跟熊谈天也能解决问题。这一调试办法真的很管用,以至于风行了整个软件工程职业,就像打印句子这一方,不论那些杂乱的东西怎样如火如荼,输出句子这一办法仍然在今日很受欢迎。
 
同泰迪熊调试法相似的一种办法叫做橡皮鸭调试法,当你在向这只一直保持沉默的橡皮鸭子解说的进程中,你会发现你的主见、观念、思路和实践的代码相偏离了,所以你也就找到了代码中的bug。一旦一个问题被充分地描绘了它的细节,那么解决办法也是清楚明了的。你觉得这个办法太“愚笨”,太“弱智”了?是的,看上去,会这样做的人脑子好像是有点缺点。不过,我要告知你的是,这个办法确实有用。由于,这便是“Code Review”的雏形!
 
9. 编写代码注释
编写代码注释
 
注释的功用便是在更易于了解的层次上解说代码的编写意图,尽或许多写一些:每行代码是干什么的,怎样去完结,这些问题都应该在通读代码之后很简略找到答案才行。其他,给各个功用和变量取合理的称号也有助于简化代码施行的进程。在代码行下面的空白处填写注释来答复为什么要运用特别的完成功用,或许一段代码怎样和程序的其他部分互动等等。
 
编写具体的注释能够说是软件工程里一步可靠地查验过程,即使是在没有bug的代码里也是相同受用。这样,就算bug呈现了也不必忧虑,注释会帮你节约数小时的排错时刻。
 
10. 编写文档
 
代码注释是程序员以简略的办法和个人的观念编写的,而编写软件文档是用来描绘软件体系的功用性,一同用户也能够看到这些软件文档。根据软件类型的不同,文档能够用来胪陈程序界面、图形界面或许作业流程。
 
编写文档还有一个优点便是,能够展现你对软件体系的了解程度,指出软件体系不行完善的部分或许有或许是bug源头的部分。

 

文章谈论

Web开发者需具有的8个好习惯
Web开发者需具有的8个好习惯
怎样成为一名黑客
怎样成为一名黑客
程序员最惧怕的5件事 你中招了吗?
程序员最惧怕的5件事 你中招了吗?
2013年我国软件开发者薪资调查报告
2013年我国软件开发者薪资调查报告
每天作业4小时的程序员
每天作业4小时的程序员
程序员都该阅读的书
程序员都该阅读的书
什么才是优异的用户界面规划
什么才是优异的用户界面规划
程序员的一天:一刻千金
程序员的一天:一刻千金
团队中“技能大拿”并非越多越好
团队中“技能大拿”并非越多越好
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
看13位CEO、开创人和高管怎样进步作业功率
看13位CEO、开创人和高管怎样进步作业功率
我换岗是由于他们的显示器更大
我换岗是由于他们的显示器更大
程序员应该重视的一些事儿
程序员应该重视的一些事儿
科技史上最臭名远扬的13大罪犯
科技史上最臭名远扬的13大罪犯
程序员必看的十大电影
程序员必看的十大电影
 程序员的姿态
优德
代码女神横空出世
代码女神横空出世
“懒”出功率是程序员的美德
“懒”出功率是程序员的美德
做程序猿的老婆应该留意的一些作业
做程序猿的老婆应该留意的一些作业
程序员和编码员之间的差异
程序员和编码员之间的差异
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
写给自己也写给你 自己究竟该何去何从
写给自己也写给你 自己究竟该何去何从
一个程序员的时刻办理
一个程序员的时刻办理
不为人知的编程本相
不为人知的编程本相
不明白技能不要对懂技能的人说这很简略完成
不明白技能不要对懂技能的人说这很简略完成
老程序员的下场
老程序员的下场
5款最佳正则表达式修改调试器
5款最佳正则表达式修改调试器
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
程序员的轻视链
程序员的轻视链
我的老公是个程序员
我的老公是个程序员
总结2014我国互联网十大段子
总结2014我国互联网十大段子
我是怎样打败延迟症的
我是怎样打败延迟症的
漫画:程序员的作业
漫画:程序员的作业
程序员周末都喜爱做什么?
程序员周末都喜爱做什么?
初级 vs 高档开发者 哪个性价比更高?
初级 vs 高档开发者 哪个性价比更高?
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
为什么程序员都是夜猫子
为什么程序员都是夜猫子
程序猿的兴起——Growth Hacker
程序猿的兴起——Growth Hacker
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
编程言语是女性
编程言语是女性
程序员眼里IE阅读器是什么样的
程序员眼里IE阅读器是什么样的
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
怎样区别一个程序员是“内行“仍是“新手“?
怎样区别一个程序员是“内行“仍是“新手“?
Java 与 .NET 的渠道开展之争
Java 与 .NET 的渠道开展之争
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
10个调试和排错的小主张
10个调试和排错的小主张
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
“龌龊的”IT作业排行榜
“龌龊的”IT作业排行榜
Java程序员必看电影
Java程序员必看电影
软件开发程序过错反常ExceptionCopyright © 2009-2015 MyException 版权一切