专栏首页极限编程Dead Code为什么能在代码库中永生?

Dead Code为什么能在代码库中永生?

Dead Code死代码,通常指存在于源码文件中,但不会被执行到的代码。

在一些遗留系统中,经常会看到大片大片灰掉的代码(被注释掉了),这种代码是死代码吗?如果要我下定义,我认为这些不是死代码,因为它们连代码都称不上,如何又能叫死代码!为什么连代码的称不上呢,因为从理论上这些语句永远不会被执行到,无论他变成什么样子,都对系统功能不会有任何影响,唯一影响的是代码库的整洁。类似的还有一些发挥着遮羞布作用的注释。

但如果你说在代码库中,所有在源码文件中能看到的字符都算作代码,那它确实可以称作死代码。注释掉的代码永远不会被执行,为什么不会被执行?很明显吗,注释掉的代码如果还能被执行,那要么是运行机制出问题了,要么是你看眼花了。

还有一类死代码,是一些从不被用到的代码,这些代码理论上是能用的,但实际上从未用过。这种代码有时候是一生下来就死了,比如一上来Getter/Setter一气呵成。有时候是因为它寿命到了,但无人埋葬。

如果说以上两种代码都是比较明显的死代码,还有一种代码,是它还活着,其实已经死了。比如说一行永远不会为真判断语句,即便里面的逻辑再绚丽,永远也不会进去,但它确让人始终抱有幻想。

被注释掉的代码

被注释掉的死代码为什么会一直存在于代码库中。之前跟小伙伴讨论过,所之所以留下来,是因为担心后续会用到,方便找回。然后,自从他有了这个想法后,这块的代码再也没有碰过。而且时过境迁,每人能看到那段被注释代码的意图,也没有人愿意去看。但它早已腐臭。

果断删掉它,不要给它腐臭的机会,如果真的要找回,你还有VCS呢。

未被调用的代码

没必要的健壮性99%情况下是真的没必要,如果真的是为了健壮性,留着他,等需要撬动200kg重量的时候,再给他加杠杆。

如果是编程习惯的问题,习惯了一气呵成,不妨尝试TDD的方式来编码,TDD出来的代码是没有无用接口的,前提是你真的是在TDD。

如果是故意留下来,因为好不容易写了,即便现在改了不用了,以后要用怎么办?还是那句话,如果真的要找回,你还有VCS呢。

永不为真的假设

在一些特定分层架构中,很多防御式编程都是一些永远不为真的假设,理想很美好,实际上你所处的环境很理想(安全),比如在内部业务层,数据有效性已经被隔离在外层,你已经活的很安全了。所以,当你觉得自己好像无所不防的时候,跳出来,跳到更高层去看看有没有这个必要。

还有一些隐蔽的假设,比如这个数据经过一番业务处理后,不再可能小于50,后面有一个小于50的判断,如果小于50,然后再做一些其他的业务处理。这种还有别于防御式编程,这种往往是业务逻辑耦合度高,职责过多,导致局部然在一起看不清楚。这种死代码需要一定的功力,Tasking需求分解和技术方案分解,简单设计等都是能够有帮助的手段。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Legacy Code Base如何做重构?

    这些特征如果同时出现在你面前,我猜你离崩溃的边缘不远了,如果后边还跟着一个PM催进度,你估计要怀疑IT人生了。不过,如果你有机会遇到这样的场景,那首先恭喜你,你...

    袁慎建@ThoughtWorks
  • 重构代码的时候,要不要考虑性能?

    重构初学者经常会提到这个问题,特别是那些之前经常工作在一些对性能有要求的系统中的程序员。讲真,重构代码不考虑性能的行为是一种不负责任的行为。但话又说回来,很多时...

    袁慎建@ThoughtWorks
  • 如何界定代码腐化?

    这个问题Scope很大,关于代码腐化的定义,仁者见仁、智者见智。在我看来,最好不要去做代码腐化的鉴定,在编写代码的过程中,时刻关注代码质量,在点点滴滴将代码质量...

    袁慎建@ThoughtWorks
  • iOS程序员请改掉影响你升职加薪的36个坏习惯!

    IT行业的科技公司们一直苦苦追寻传说中以一当十的超级程序员,最新的研究表明确实存在这样一小撮效率奇高的“程序金刚”,但是一位普通程序猿如何能够蜕变成代码金刚呢?

    原来是泽镜啊
  • 有了这个神器,贴代码请大佬调试的时候再也不怕被骂这是什么鬼玩意儿啦!

    作为一个不知名的号主,承蒙大家不嫌弃,经常性的会有人非常客气的把一堆代码扔到我的脸上,这些代码千奇百怪,姿态各异,让我喜笑颜开...

    Rocky0429
  • 高级Python工程师教你如何正确写代码

    我接手的第一样东西就是React UI。我们有一个主要组件,它容纳了其他所有组件。我喜欢在代码中加入一点幽默感,我想把它命名为GodComponent。在cod...

    小小科
  • JS逆向时碰到了恶心的死代码怎么办?手把手教你解决!

    你是否也曾有过「跟着代码跳了很久之后,才发现那一大坨代码其实没有任何作用」的惨痛经历?

    青南
  • JS逆向时碰到了恶心的死代码怎么办?手把手教你解决!

    你是否也曾有过「跟着代码跳了很久之后,才发现那一大坨代码其实没有任何作用」的惨痛经历?

    崔庆才
  • 关于CodeReview的一些思考

    上图为[产品迭代开发协作流程],其中我们在 Demo 本次迭代之前会对开发人员的代码进行评审,所以今天就聊一下关于CodeReview的一些思考。

    用户5397975
  • 代码能写多少写多少 No.187

    有个朋友说,他十天写了 20000 行代码,当时我的膝盖就直接给它了,怎么会有这么强的选手??!!

    大蕉

扫码关注云+社区

领取腾讯云代金券