- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
演讲人:王晓波
重构的意义重构-Refactoring重构的定义重构的目的重构和重写
重构名词对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。重构动词使用一系列重构的手法,在不改变软件可观察行为的前提下,调整其结构。重构-Refactoring
保持行为不变尽管重构会对代码的内部结构进行调整,但其功能和对外表现必须保持一致。内部优化重构关注的是代码的内部实现,通过改善代码结构来使其更具模块化、更易理解和维护。持续性贯穿在软件开发的各个阶段,而不是一次性的任务。持续的重构可以防止代码质量在开发过程中逐渐恶化。重构-Refactoring
目标01.提高可读性清晰且易于理解的代码使开发人员能够更快速地理解和上手03.减少重复和相似代码消除重复代码,减少维护多个相似代码片段的成本02.增加可维护性使得错误更容易被发现和修复,添加功能变得更加高效率04.提升项目性能在重构过程中常常能够发现并修复性能瓶颈重构的目的
重构和重写如果重写比重构还容易,就别重构了,此时重写反而是更高效和正确的选择!局部范围,逐步进行的低风险,不改变外部行为时间成本低,开发中同步进行不涉及系统架构重新设计重构重构和重写重写全面的,大规模的改动高风险,引入新Bug或不兼容时间成本高,暂停其他工作系统架构整个重新设计
原则和挑战重构的原则何时重构产品经理挑战风险管理挑战团队协作挑战
重构的原则强调在保证代码外部行为不变的前提下,通过逐步的、小规模的改动来优化代码的内部结构。要正确地进行重构,前提是得有一套稳固的测试集合,帮助我们避免疏漏。030102重构的原则保持行为不变保持已有的测试用例关注代码可读性,风格统一关注重构后的性能变化,逐步优化性能优化消除,重复或相似功能的代码优化代码设计和代码架构
新功能理解代码捡垃圾代码评审重构的最佳时机就在添加新功能之前,比如:已经有函数提供了我需要的大部分功能,做一个简单的重构,就能快速完成功能。当我们花费了数分钟才弄懂“这段代码到底在做什么”的时候,就需要考虑重构了。捡垃圾方式的重构,虽然我已经理解代码在做什么,但是发现它们做得比较差。复审代码时做重构,当我们做codereview的时候,提出一些建议,加入重构。何时重构
“怎么和经理说重构的事情?”经理会认为,重构要么是在弥补过去犯下的错误,要么是不增加价值的浪费人力。如果团队的经理不具备技术或研发思维,他们不理解代码的健康对生产率的影响,那么就:不要告诉经理!重构能让软件的新功能开发的更快,受进度驱动的经理会要求我们尽快的完成任务。因为重构能让持续交付任务更快,所以我们就做重构。来自产品经理的挑战
引入新Bug历史项目兼容性来自风险管理的挑战现有代码理解可能比较困难,特别是大型,历史悠久的项目,代码缺乏文档,理解起来会更加困难。重构可能带来一些不可预见的副作用,引入新的Bug之类。所以需要验证行为不能改变,要有充分的测试覆盖,如果测试功能不完整,会有风险。随着技术的发展,可能需要将代码迁移到新的框架或语言,这增加了重构的复杂性,重构时要考虑新旧技术栈的兼容性,避免引入新的问题。
避免冲突团队成员可能对重构有不同的看法,确保团队成员在重构过程中保持同步,避免冲突和重复工作。代码风格团队成员风格不一致,可能导致重构后的代码风格不统一。可以使用代码风格检查工具,如Prettier、ESLint等,统一代码风格。资源分配重构可能与其他团队的开发任务冲突,导致资源和时间分配的困难。将重构任务拆分为多个小的、可管理的迭代,合理分配优先级。新成员新成员可能对现有代码和重构计划不熟悉,导致融入困难。可以搭建共享知识库,帮助新成员快速上手。来自团队协作的挑战
代码的坏味道坏代码案例其他坏味道
坏味道本身并不仅仅是错误或bug,也是代码质量的警示信号。理解和识别这些坏味道,对于保持代码的可维护性和质量至关重要。代码的坏味道
重复代码大量重复这是一段获取时间和分钟的代码在整个项目的31文件中有61段重复神秘变量命名代码中的,m,m1,hour,hour1都不是一个好名字坏代码案例
面向字符串编码这是一段Go语言代码,Order是数据库取出来来的订单信息不使用类和对象的属性,使用字符串的类型作为属性的key,失去了编辑器和编译期的检查坏代码案例
霰弹式修改这段代码,将order对象的is_pool_order属性转为int类型的代码,散落在项目的各个地方,如果要修改逻辑,需要修改项目的很多处坏代码案例
错误的利用数据类型的特性Go语言中对时间类型Fo
原创力文档


文档评论(0)