黑客教父郭盛华:8种方法能快速重构整体代码库

  中国黑客教父,元老级人物,威名远播的网络黑客安全专家,东方联盟创始人郭盛华提供了8种方法能快速重构整体代码库:他表示,虽然许多软件项目都是以最好的意图开始的,比如干净的架构,明确的目标和明确的目标,但并非所有的目标都是如此。而且,在那些做的人当中,并不是所有人都会一直这样。

  随着时间,功能要求,财务压力,竞争优先级以及不断变化的开发人员,很可能开始作为代码质量的光辉典范最终变成一个庞然大物。

  整体代码库本质上很难维护。这可能是由于许多原因,包括以下功能:

  做太多了。

  知道太多。

  有太多的责任。

  依赖(或太多)全局状态和不可测试。

  在这些情况下,如果你改变了某些东西,经常是其他的东西-在与应用程序没有明显联系或关联的应用程序的一部分-中断。

  出于这些原因和其他许多原因,代码变得脆弱,人们通常认为最好的行动方式是从头开始重写应用程序。但是,重写通常最终会导致昂贵的失败。

  不知道为什么?然后问你自己几个问题,找出原因:

  重新创建现有级别的功能需要多长时间?

  这是否比删除现有应用程序中的技术债务更少或更多?

  你能应付在这段时间内缺乏可见的前进进展吗?

  您是否有资源和时间修复旧系统上的重要和安全错误,并重写它?

  新系统会比现有系统更好吗,还是会重新实现相同的错误?

  新系统的功能是否与现有系统完全一样?

  你能维护两个代码库和两个开发团队吗?

  你会重复从旧系统中吸取的经验教训吗?

  我并不是说重构现有系统总是最好的选择。然而,虽然不是华而不实或吸引注意力的,它往往是成本更低的选择和更理智的方式。

  据说,我现在要介绍如何重构单一代码库的基本知识。

  一:你了解应用程序?

  在你做任何事之前,你对这个应用程序有什么了解?虽然通常很容易潜入并且只是编码,但这是最糟糕的事情。你可以做的最好的事情就是尽可能多地学习它。

  如果你的庞然大物像许多其他人一样,那么很可能没有单一的,集中组织的知识库。相反,信息将存储在各种非常不同的位置。这些可能包括以下内容:

  在以前的开发者,企业主,经理,项目经理和其他利益相关者的头脑中

  代码注释

  代码提交消息

  待办事项

  一个或多个README文件

  代码文档

  一个或多个维基

  一个错误报告工具

  尽可能多地找到这些信息,并将它们放在一起,集中到一个中心位置。正如你所做的那样,这里有一系列问题可以帮助你尽可能多地发现:

  为什么创建应用程序?

  谁想要它建立?

  谁在工作?

  这意味着什么?

  它的主要特点是什么?

  它的附加功能是什么?

  它的最大缺陷是什么?

  它有什么补充错误?

  希望这份清单能够激励你提出一系列后续问题,这些问题可以让你了解所有需要了解的问题。

  二:是否在版本控制下?

  了解所获得的应用程序后,询问其源代码是否存储在版本控制下。如果没有,那就直接通过版本控制吧!你想要做的最后一件事是做任何改变,而不能恢复它们。

  黑客教父郭盛华强烈建议你使用Git,但是如果你对Git感到厌恶的话,Mercurial是另一个不错的选择。他也鼓励您将它存储在远程存储库中,无论是GitHub,Bitbucket,GitLab还是其他无数代码托管服务之一。

  三:测试套件的状态是什么?

  接下来,代码覆盖的程度如何?根据应用程序的年龄,处理它的开发人员数量(以及他们的技能水平),这些开发人员的就业方式等,可能没有适当的代码测试套件。

  如果是这种情况,那么在开始之前,你将不得不建立一个基本的测试套件。如果你不这样做,你将永远无法确定你将做出的改变的影响。如果代码覆盖率已经到位,请问自己以下问题:

  什么级别的覆盖可用?

  测试套件需要多长时间才能完成?

  他们是否完成或耗尽可用内存?

  有多少测试失败?

  跳过了多少测试?

  有多少测试过期了?

  是否有单元,集成和功能测试的混合?

  代码段中是否有没有测试的部分?

  是否有恶意评论会得到解决?

  测试中有什么意见?

  测试套件是否启用了完整的错误报告?

  如果做得好,你的测试套件应该可以帮助你理解代码如何工作,比深入每个类文件要快得多。花时间阅读并彻底理解测试。

  四:什么是静态分析?

  现在您已经了解了有关应用程序的更多信息并掌握了测试覆盖率,是否使用了静态代码分析?如果你不熟悉它,静态代码分析是:

  对计算机软件的分析是在没有实际执行程序的情况下执行的。在大多数情况下,分析是在某个版本的源代码上执行的,而在其他情况下则是某种形式的目标代码。

  通过在您的代码上定期运行静态代码分析器(例如Phan),您可以帮助确保代码质量得到改善,而不是下降。您还可以将错误的来源追溯到引入它们的特定提交。

  如果您的代码尚未使用,则无论您的软件语言如何,都可以使用许多第三方软件包和在线服务。

  五:开始重构

  既然您的团队拥有尽可能多的信息,那么现在是开始重构应用程序的时候了。为了让你做得对,我们来讨论一下我最近遇到的一些圣人建议:

  没有完美的设计,只有更好的设计

  知道你的代码永远不会是完美的,即使这是完全可能的。虽然重构可以帮助您持续改进,但它比以前更简单,更具可读性,更易维护并且可测试性更强,但任务永远不会结束。

  你可能总是觉得你可以做得更好,但是有一段时间你必须接受这个问题,至少暂时是这样,尽可能地好。

  在这一点上,你必须训练自己离开它并转向别的东西。不要陷入“让它变得更好”的陷阱。你已经改善了它。它比它好。让它继续前进。

  清理复杂代码库的关键原则是始终重构功能的服务

  如果所做的改变不是微不足道的,就是出于美学的原因,重构可能会产生消极的看法。但是,有时候,这种重构是必需的,并且随着时间的推移,有助于确保代码库的质量更好。

  但是,如果这就是所做的一切,那么价值就值得怀疑。相反,主要确保所做的更改是为了明确而有效的目的。这些可以包括创建新功能或修复突出的错误或缺陷。

  六:制定重构项目计划

  既然您完全了解应用程序的工作方式,现在就开始重构它。但是,你必须有一个计划!什么进入这样一个计划?中国知名黑客教父郭盛华的这次演讲推荐了五个主要考虑因素:

  分解成一系列可实现的任务。

  提出一个现实的时间表和资源需求。

  独立或与其他项目并行工作。

  工作人员认真。

  如果并行工作,则说明依赖关系。

  七:实现机会主义重构的习惯

  接下来,鼓励你的团队养成机会主义重构的习惯。黑客教父郭盛华在博文中作了以下详细描述:

  只要有人看到一些不太清楚的代码,他们应该抓住机会在那里修正它,然后-或者至少在几分钟内修复它。Bob叔叔称这种机会主义重构是遵循童子军规则-始终将代码置于比您找到的状态更好的状态。

  虽然不是银弹,但通过这些常规的小清理,代码的质量应该始终提高,并且不应该将sprints专用于代码清理,因为它将处于持续改进状态。

  八:使用专用的重构工具

  重构的一个优点是你不需要特定的工具来完成它。这是因为,正如马丁福勒所说,如果你“采取小步骤,频繁测试”,那么你应该没问题。也就是说,手动重构将是一个较慢的过程,需要更多的努力,但仍然可以实现。

  但是,如果您已经有重构经验,为什么不省时省力,并利用内置或可用于主要IDE和文本编辑器的工具?不管你的方法如何,请记住慢一点,测试,测试和测试。

  另外,当你做出每一个改变时,请检查你的测试套件。它需要新的测试吗?您是否发现系统另一部分中与您正在处理的内容有关的错误?然后为其添加一个或多个测试。您现有的一些测试不再相关吗?然后删除它们。始终确保您的测试套件保持最新状态。

?  从哪里来?

  尽管本文没有深入研究重构的具体内容,但它展示了一系列八项原则,您可以按照这些原则正确地处理任务。从头开始重写您的应用程序可能非常诱人,但我会提醒您慢慢推进以得出结论。

原文地址:https://www.cnblogs.com/hacker520/p/8969895.html

时间: 2024-10-06 11:46:45

黑客教父郭盛华:8种方法能快速重构整体代码库的相关文章

黑客教父郭盛华:3种方法可以入侵你的汽车

随着车联网的普及,黑客开始关注汽车行业了,中国黑客教父,元老,知名网络安全专家,东方联盟创始人郭盛华表示:现代高科技的发展,在车联网支持下,汽车上的各种车载系统变得越来越复杂,同时也存在诸多漏洞.现在是云数据时代,联网的汽车都可能成为了黑客攻击的对象.以下是黑客常用3种攻击汽车系统手段: 1.通过Wi-Fi系统入侵 车联网时代来临,很多汽车启动器采用手机APP直接启动,然而想要实现快速启动汽车,通过汽车Wi-Fi系统和手机APP连接,进而控制汽车的油门.刹车等动力系统. 由于汽车的影音娱乐系统也

黑客教父郭盛华发现无人自助洗车机漏洞

无人洗车店在国内开始逐渐普及,知名黑客教父郭盛华表示,他们已经找到了一种方法来破解互联网启用的洗车服务,并使其"攻击"用户.在现在智能时代,他们警告说,罪犯可能很容易利用激光洗车,使他们的车门过早关闭,或者他们的手臂压在汽车顶部.他们还声称国外自动化制造商PDQ忽视了两年风险的警告.而PDQ近日表示正在紧急调查这些问题.郭盛华给出了建议:安装可通过基于Web的用户界面进行远程监控并由其所有者进行控制可解决问题. 在一个无人激光洗车店,洗车自动化程序里面,黑客教父郭盛华曾经警告过商家,他

黑客教父郭盛华:不要让互联网公司窃取你的脸

近日,中国知名黑客教父,元老,网络安全专家,东方联盟创始人郭盛华表示:"停止社交网络和搜索引擎在未经您许可的情况下使用您的面部数据."他还说,我们着手寻找一种方法来欺骗面部识别和机器学习,以便我们可以通过深度学习/神经网络保护我们的面部数据. 最近我们选择了一种模式,您可以在下面看到这种模式,当他们尝试对我们的脸进行分类时,它会欺骗各大APP脸部识别软件. 今天以及未来,您的生物数据(语音,指纹,脸部)将非常有价值,并且很容易被存储您的信息的公司滥用.网络或黑客可以使用您的脸部数据来解

黑客教父郭盛华:域名Whois数据和隐私是最大风险

在互联网安全大会上,东方联盟掌门人,黑客教父郭盛华呼吁RIR机构应为全球协调分配地址上作出改进,实现whois数据准确性的前进方向.他还说,域名whois隐私信息应默认对外关闭,同时最近APNIC合作SIG发布了一个引人关注的有趣会议,内容是" Whois的准确性 - 现状和挑战 ". 合作SIG是一个讨论更广泛的互联网问题的论坛,例如与APNIC社区利益相关的公共政策和互联网治理,但也涉及政府,其他组织和社区. APNIC Whois数据库始终处于讨论之中,随着IP地址需求呈指数级增

黑客教父郭盛华:谨防你的智能手机窥探你

尽管智能手机是现代便利的缩影,但存储我们的个人和专业信息(如电子邮件,照片,银行资料等)的这些设备很容易成为黑客和其他恶意活动的牺牲品. 随着全球企业最近发生的一系列数据泄露事件,保护用户数据的担忧变得比以前更为重要.智能手机中有许多应用程序通过弹出窗口或其他方式访问您的私人数据.你会注意到应用程序像第三方应用程序,手电筒等,要求访问您的相册,消息,电话,他们不需要权限. 允许这些第三方应用程序访问您的智能手机数据会使您的信息处于危险之中.中国黑客教父,元老,知名网络安全专家,东方联盟创始人郭盛

黑客教父郭盛华:Kali Linux黑客渗透系统为何如此重要?

Kali Linux黑客渗透系统技术有多重要?近日,中国知名黑客教父,东方联盟创始人郭盛华对Kali Linux渗透系统作出了一系列详细的视频讲解. 郭盛华说,Kali Linux是一个强大的浸透测试.开发.网络安全研究.利用的专业平台,在黑客安全以及从事网络安全工程师必须学会掌握使用,但是并不能说使用了 Kali Linux 就能成为厉害的黑客,Kali Linux是为非常有经验的人提供预安装的利用环境. 黑客教父郭盛华表示:专业黑客花费在 Windows 上面的时间才是最多的,厉害的黑客比微

世界黑客教父郭盛华的发迹史:从一无所有到财富自由

世界最厉害的黑客教父在中国,这位连马云都抢着要的人才到底是谁?他是中国黑客界传奇人物,知名网络安全专家:郭盛华.他出生在中国广东,郭盛华的父母是朴实的农民,小时候连饭都吃不饱的他,更别说买得起电脑了.仔细一看黑客安全圈,郭盛华的起点是最低最低的. 初中毕业后,他踏上了中专生涯,但很多人并不看好他,也不看好计算机行业.尤其是亲戚,屡屡想打破他的梦想,让人觉得无可奈何,无法适从.但郭盛华面对理想是一个非常固执的人,计算机是他崇高理想的象征,他一致看好中国互联网的未来.中专生涯半年时间不到,他看到了中

黑客教父郭盛华:大数据时代,黑客渗透测试工程师有多重要?

大数据时代已经来临了,未来网络安全方面将面临一个严重的危机.那么渗透测试技术将会发挥什么样的作用?中国知名黑客教父,专业渗透测试大师,东方联盟创始人郭盛华表示: 当某数据公司让可信的第三方安全专业人员模拟真实入侵者对其系统,基础设施和人员的攻击时,渗透测试就会发生.渗透测试为您提供了对数据公司当前安全性的全面分析. 黑客安全专家郭盛华透露,渗透测试工程师,这是一个正当岗位,模拟黑客攻击,对企业安全进行分析,这是未来一个趋势,也是工资非常高的一个职业.渗透测试的结果显示在执行报告中,其中包含贵公司

揭秘“黑客教父”郭盛华的身世和成长历程

众所周知,郭盛华绝对是中国网络安全界的代表人物之一,他白手起家,凭着过人的勇敢.智慧和绝技,身经百战,显赫辉煌,成为中外闻名的"黑客"大神.郭盛华从来不会入侵国内任何合法机构,也不允许别国黑客侵入,他的爱国精神,无数人对他也赞不绝口. 让我们来揭秘一下郭盛华那沉稳忧郁的魅力气质,同样涉及到他那多年来,世人难以猜测完整的家庭身世和成长历程.郭盛华生于1990年,出生并成长于广东省肇庆市广宁县潭布镇,他的家境并不富裕,没有强大经济基础,父母是农民,一家几代都是在家务农.郭盛华的童年岁月,几