就下载 —— 安全下载、无毒手机软件、绿色软件官方下载网站最近更新|下载排行|热门标签|收藏本站

您现在的位置是:就下载 > IT资讯 > 软件应用 > 干掉你程序中的僵尸代码

干掉你程序中的僵尸代码

时间:2014-07-03 13:50:28 来源: 互联网 复制分享

《干掉你程序中的僵尸代码》根据互联网资讯由就下载(www.9xz.net)为您收集整理。

  随着万圣节越来越流行,我感觉有必要跟大家讨论一下一个在软件开发中非常普遍的问题:僵尸代码。几乎所有我接触过的代码库里都四散着很多小段的,甚至大片大片的被注释掉的代码。这就是僵尸代码。

  //目前禁用这项功能。Jimmy在写这段代码时肯定是喝醉了。

  //你可能以为这里发生了恐怖的代码凶手案…不,不,我只是把它们注释掉了…

  为什么称它们为僵尸代码?你知道,僵尸不并不是真的死的。就像恐怕电影里告诉我们的,尽管僵尸看起来是死人,但它们仍有能力四处出没袭击我们。相同 的道理,僵尸代码也是处于不生不死之间…它们在伺机搞砸我们的工作。注释掉的代码还活着,它们就存在我们的代码库中。程序员在维护和重构代码时会和它们遭 遇,通常是滚动屏幕时和它们擦肩而过,或是在进行关键词搜索时和它们撞个满怀。但这些代码也确实是死的,因为它们在软件产品中并不执行。因此,这些僵尸就 应该被烧掉,立刻。

  僵尸代码不死之躯

  我认为,有两个原因导致了僵尸代码的肆虐:懒和害怕风险。懒程序员对代码有收藏癖。他们缺乏确信的勇气和清楚的认识去删除无用的代码,于是他们就把 它们隐藏在注释里,期望有朝一日它们能复活来再次祸害人。代码需要经常的、有计划的删除,因为优秀的程序员都知道:代码就是债务。越少越好。当然,被注释掉的代码仍然是代码。

  烂程序员也许会争辩说,他们注释掉这些代码是为了“万一”以后有人会需要它们。事实上,这好心反而是害了大家。这实际上说的是害怕风险,缺乏对版本 控制系统作用的信任。有版本控制系统在,删除的代码永远不会真正的死掉。它们被埋到棺材里但却活着。所以,注释代码的方法没有多大实际效用。

  

僵尸

 

  对于程序来说,注释掉的代码跟删掉的代码一样,不起任何作用。让代码半死不活,以僵尸的形态存在,造成技术债务,最终会让你的团队受害。要果断,删掉它们。

  僵尸代码降低信噪比

  当写程序时,我们一定要努力使代码里有效信息的比率越高越好。这有助于人们理解程序,更快的阅读代码,防止我们因为误解而写出有问题的代码。僵尸代 码直接的对抗代码的可理解性。它拖延我们阅读和维护代码的速度,因为它使我们在屏幕上看到更少的有效代码。它们就是视觉噪音,干扰人们的正常阅读。处于某 些原因,有些程序员会接受这种妥协的做法,可是在现实中,谁会接受这种乱糟糟的画面。想象一下,如果纽约时报看起来像这个样子:

  

纽约时报

 

  如何阅读这断断续续的文字?噪音的增加就是对可理解性的损害。对这些被注释掉的部分,尽管它们毫不相干,甚至会误导,但你却无法对它们视而不见。有 人会说,这不是最终发布的产品,这些代码存在于开发过程中,拿它们跟发布的产品做对比,这就像拿苹果比桔子。但是请记住,被写出的每行代码平均都要被阅读10次。没错,你的代码的阅读人数没有纽约时报多,但是,你拥有的是一个最重要的忠实的阅读群体。就是我们。 Knuth对此关切进行了精辟的总结:

  “编程是一种一个人告诉另一个人他想让计算机做什么的艺术。” Donald Knuth

  而僵尸代码让你讲话讲不清楚。一个程序员需要去阅读被注释掉的代码吗?

  僵尸代码造成歧义妨碍调试

  注释掉的代码会带来歧义,人们会怀疑这些代码是否该注释掉。试想一下,你是一个来维护程序的程序员,突然看到了一片注释掉的代码,而程序就在这附近 出了问题。这个程序员的任务会变得更棘手。他需要阅读和理解这些注释掉的代码,了解注释它们带来的影响。是因为测试而注释这些代码但忘了恢复吗?也许注释 这些代码的人可以提供帮助,但他是谁?调查行动开始。多余的歧义会消耗你的时间,增加你的思考负担——本来可以是一次轻松的调试过程。

  僵尸代码影响关键词搜索

  在大型程序库中,grep/find命令将会是你锁定某些特定的代码片段的雷达。然而,如果程序库里到处散布着僵尸代码,很有可能你捕捉到的目标都是被注释掉的。这是干扰。浪费时间。

  僵尸代码影响代码重构

  反省(重构)能修复我们的灵魂。我们应该以小孩scout的做事原则为荣,永远把代码收拾得比你想象的要整洁。然而,当一个类或方法包含有大量的僵尸代码时,事情就不好处理了。如果重构这段程序,我是否还要参考注释掉的代码?它们近期将会被重新使用吗?它会影响我的新版的实现吗?这些问题对于维护的程序员来说本该不需要回答的。

  此外,集成重构工具根本不会考虑这些注释掉的代码。因此,当方法,变量,类被重命名或修饰符改变时,这些注释掉的代码就不会同步做修改。当你再想把注释掉的代码复活时,它们很可能根本不能编译。

  有例外吗?

  没有。很明确。有人会说“我现在注释它们是因为我过会儿就要恢复它们。”OK,假设你是个家庭妇男,你走到起居室,看到:

  

被封住的开关

 

  想想你内心的对话。这是个漂亮的房子,但这个东西又丑且怪异。我想开灯,但怎么会有胶带?如果我撕掉胶带去开灯,会发生什么事情?你很可能最终决定 找贴胶带的人。“哦,我想打开吊扇,但它启动时来回摇摆,掉了下来,我想修理它….”当然,这是应该的。而在你没修好它之前,胶带一直贴在开关上。我们当 然不该让这些只修了一半的东西存在屋内。同样,我们也不接受这样的代码。

  说的更明白些,任何被注释掉的代码都是僵尸代码,都应该被删掉。不管有多少。不管是在发布的产品中还是在开发环境中。僵尸代码有时会在生死之间摇 摆。如果代码被注释掉,这很有可能有东西没有完成。经常是配置需要来回切换或逻辑分支左右摇摆。注释代码可能会做实验性的来回切换,删除这些代码,建一个 记事贴,记录下需要做的事情。在记事贴中记下哪次提交版本时删除了这些代码。或者,新建一个版本分支专门做这事,合并时删除它们。这样,维护工作就不会受 到干扰。

  心里的核对表

  如果你打算要注释一段代码,请先问问自己:

  如果有可能的话,什么时候会取消注释?

  是否能删掉它,如果日后有需要,从版本控制系统里找回?

  对这些未完成的、有可能会回滚的代码,能否用版本分支来处理?

  这种需要来回切换注释的功能可否通过配置实现?

  重构时也需要重构这些注释掉的代码吗?

  让我们开启第一次年度万圣节僵尸代码大清剿。

换链神器教你如何解决我不想与对方互换链接问题

换链神器解决对方恶意下链投诉方法

换链神器网站列表-数据更新说明

换链神器删除网站说明

换链神器如何暂停网站互换链接?

换链神器使用教程

甜椒刷机助手V3.0QT体验版 2013华丽上线

微软Project 2013专业版RTM60天试用版下载

如何用拍大师进行原创视频创作

拍大师移动版随时随地拍出别样精彩

闹元宵 甜椒刷机助手发布V3.0.5元宵版

2012末日诱惑 再不性感就晚了!

永中Office 2013 个人版正式发布

拍大师之拍我秀秀功能使用教程

Office 2013可支持语言已达106种

好声音在路上,拍大师圆你歌手梦

进军杀毒市场!百度杀毒软件2013正式发布

WPS Office 2012 SP2 专业绿色版

中文触摸recovery,甜椒刷机助手开启刷机新纪元

《OneKey 一键还原》8.0正式版发布

换链神器教你如何解决我不想与对方互换链接问题

换链神器教你如何解决我不想与对方互换链接问题 由于特殊原因,不想与对方进行互换,如何处理? 解决方案: 在互换列表里面选中需要取消互换链接的那行,右击选择,我要下链(输入你的下链理由)点确认即可。 确认后,这条记录将在您的互换...【详细】

http://www.9xz.net/it/ruanjianyingyong/7612.html

换链神器解决对方恶意下链投诉方法

换链神器解决对方恶意下链投诉方法 说明:在没有写明下链理由情况下,直接删除网站链。这种就属于恶意下链。 解决方案:您可以直接互换列表里面选择对方链接一行,右击重新检测一下,如还是提示异常,则人工打开对方网站...【详细】

http://www.9xz.net/it/ruanjianyingyong/7611.html

换链神器网站列表-数据更新说明

换链神器网站列表-数据更新说明 网站列表-数据更新说明 1:系统会每隔24小时对网站所有SEO数据进行自动更新(登陆客户端的情况下)例如:今天早上添加的网站并更新过,到了明天早上八点登陆客户端,系统会自动更新,如果...【详细】

http://www.9xz.net/it/ruanjianyingyong/7610.html

换链神器删除网站说明

换链神器删除网站说明网站列表删除网站说明: 一:删除网站后所有网站之前的数据会保留在服务器(如:换链记录,准时率,被投诉,超时次数等等),再次添加,这些属性会随着网站添加至新的会员属性中。 二:如有误删除...【详细】

http://www.9xz.net/it/ruanjianyingyong/7609.html

换链神器如何暂停网站互换链接?

换链神器如何暂停网站互换链接? 如何暂停网站互换链接? 选择相应的网站,点击“修改”,选择“暂停网站”即可。暂停网站后,该网站不会在互换大厅显示。...【详细】

http://www.9xz.net/it/ruanjianyingyong/7608.html

换链神器使用教程

换链神器使用教程 使用教程第一步登陆“换链神器”进入“网站列表”点击“添加网站”并设置换链匹配条件,添加完网站后系统会在十分钟后自动更新所添加网站SEO数...【详细】

http://www.9xz.net/it/ruanjianyingyong/7607.html

甜椒刷机助手V3.0QT体验版 2013华丽上线

甜椒刷机助手V3.0QT体验版 2013华丽上线   向安卓用户的新年献礼!享受与众不同的刷机体验!   2013新年伊始,甜椒刷机助手为答谢广大安卓手机用户对甜椒的支持与信赖,倾情推了甜椒刷机助手V3...【详细】

http://www.9xz.net/it/ruanjianyingyong/1356.html

微软Project 2013专业版RTM60天试用版下载

微软Project 2013专业版RTM60天试用版下载   微软刚刚放出新近发布的Project Professional 2013的60天试用下载链接。Project 2013专业版将仅适用于Windows 7和Windows 8,并可在32位和64位系统...【详细】

http://www.9xz.net/it/ruanjianyingyong/1355.html

如何用拍大师进行原创视频创作

如何用拍大师进行原创视频创作   之前小编给大家介绍的视频编辑制作软件《拍大师》,小编亲测了该软件的“拍游戏”“拍我秀秀”和“拍照截图”功能...【详细】

http://www.9xz.net/it/ruanjianyingyong/1354.html

拍大师移动版随时随地拍出别样精彩

拍大师移动版随时随地拍出别样精彩   末日过后,2013惊喜连连,PC版拍大师2.0变速版刚刚推出不久,移动版拍大师即闪亮登场,拉开爱拍移动的序幕。本次拍大师移动版先推出了Android系统的安卓...【详细】

http://www.9xz.net/it/ruanjianyingyong/1353.html

闹元宵 甜椒刷机助手发布V3.0.5元宵版

闹元宵 甜椒刷机助手发布V3.0.5元宵版   玩刷机,闹元宵。在一年一度的元宵节到来之际,甜椒发布V3.0.5元宵版,与机友们一起闹元宵。凡使用甜椒刷机助手的用户,每天都能参加幸运大转盘活动,每天...【详细】

http://www.9xz.net/it/ruanjianyingyong/1352.html

2012末日诱惑 再不性感就晚了!

2012末日诱惑 再不性感就晚了! 末日会不会来?玛雅预言会不会真的发生?最近我们都有太多关于末日的想法啦!尽管我们没办法确切的知道到底有没有世界末日,但大多数网友们还是认为不管明天...【详细】

http://www.9xz.net/it/ruanjianyingyong/1351.html

永中Office 2013 个人版正式发布

永中Office 2013 个人版正式发布   无锡永中软件有限公司日前发布了全新的永中Office 2013 个人版,新版本以全新的界面体现清新时尚,即时菜单、智能图表、功能区的压缩和助记符的提供...【详细】

http://www.9xz.net/it/ruanjianyingyong/1350.html

拍大师之拍我秀秀功能使用教程

拍大师之拍我秀秀功能使用教程   之前小编给大家介绍了拍大师这款最简单的视频制作编辑软件,还教大家怎么使用有拍大师的拍游戏视频功能,相信大家看了之后都会使用拍大师的录游戏功...【详细】

http://www.9xz.net/it/ruanjianyingyong/1349.html

Office 2013可支持语言已达106种

  近日,微软在其官方博客上发布消息表示他们已经在Office 2013中加入了对国际用户以及多种语言的支持,其中新加入的语言有位于亚洲地区的印度语、马来...【详细】

http://www.9xz.net/it/ruanjianyingyong/1348.html

好声音在路上,拍大师圆你歌手梦

好声音在路上,拍大师圆你歌手梦   《我是歌手》好声音在路上,拍大师圆你歌手梦!由浙江卫视强力打造的《中国好声音》热度仍没褪去,又一个叫做《我是歌手》的音乐对决综艺秀火了起来,各...【详细】

http://www.9xz.net/it/ruanjianyingyong/1347.html

进军杀毒市场!百度杀毒软件2013正式发布

进军杀毒市场!百度杀毒软件2013正式发布   2012年,百度曾面向泰国市场推出了电脑优化工具Baidu PC Faster,现在,百度终于亮出了大招,正式推出了百度杀毒软件2013(Baidu Antivirus 2013),不过...【详细】

http://www.9xz.net/it/ruanjianyingyong/1346.html

WPS Office 2012 SP2 专业绿色版

WPS Office 2012 SP2 专业绿色版   对于WPS Office系列的办公软件,相信大家都不会陌生,它一直以免费且高效收到广大用户喜爱。最新版WPS Office 2012全新的界面选择、全新的首页模板、...【详细】

http://www.9xz.net/it/ruanjianyingyong/1345.html

中文触摸recovery,甜椒刷机助手开启刷机新纪元

中文触摸recovery,甜椒刷机助手开启刷机新纪元   今日是甜椒刷机助手为刷机界打开新纪元的一天,中文触摸recovery模式发布。中文触摸recovery改变了刷机时候的技术编程显示方式,通过图示的方式显示...【详细】

http://www.9xz.net/it/ruanjianyingyong/1344.html

《OneKey 一键还原》8.0正式版发布

《OneKey 一键还原》8.0正式版发布   龙腾摆尾辞旧岁,金蛇起舞闹新春!OneKey一键还原提前携礼给各位朋友拜年,恭祝各位友人在新的一年里:心想事成,万事如意,阖家幸福!   官方下载地址:Onek...【详细】

http://www.9xz.net/it/ruanjianyingyong/1343.html

上一篇:2012年三季度全球网络攻击33%来自中国

本文地址:软件应用 >> http://www.9xz.net/it/ruanjianyingyong/1236.html

下一篇:[黑历史]无处不在的Windows蓝屏

  • 打印
推荐阅读
推荐内容
热点内容
推荐安卓应用