重构从现在开始

这篇具有很好参考价值的文章主要介绍了重构从现在开始。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 前言

重构,是一名程序员必备的职业技能。然而,大多数人对于重构的认知仍然停留在项目中期为了提升代码质量而做的并非不可不做的操作。对于重构的重要性和含义并没有充分的认知。

本文,笔者将结合自身经验和阅读《重构,改善既有代码的设计》一书(下面简称《重构》)的心得,以系列文章的方式讲述重构的内功心法以及武功招式。

2 何为重构

重构,就是对软件代码进行调整。这里调整的前提是不改变软件的功能,目的在于使代码更易让他人看懂,从而进行有意义的修改

对于程序员来说,大多数情况下很难做到对一个项目从 0 到 1 地开发,往往都是中途加入,在已有的代码基础上进行现有代码的修改或增加新的特性。由于项目往往经过多人的合作开发,每个人的编程风格各异,从而导致代码质量直线下降,不同模块给人一种割裂感。因此,当我们接手一个前人写过的项目代码时,往往喜欢戏称之为“屎山”。

屎山带来最直接的影响就是:

  1. 代码不易阅读和理解
  2. 代码不易修改,新特性很难加入

因此,为了方便修改和理解,我们需要对修改的部分的相关代码在不改变其功能的基础上进行一定的调整,这个过程就是重构。

3 为何重构

  1. 重构改进软件的设计
  2. 重构使软件更容易理解
  3. 重构帮助找到bug
  4. 重构提高编程速度

4 何时重构

很多人习惯性地认为重构应该发生在特性实现后,但事实上这样只是方便了后人对你的代码进行修改,而对于你本次开发的难度性没有任何减小。

那是否是在特性实现前?事实上,我们大多数时候无法保证自己第一遍写出来的代码能够完全符合高质量代码的标准而不需要重构。因此,特性实现前的重构只是方便了自己本次的开发,但对于本次开发引入的新的屎却无法解决。

最佳实践:
我很喜欢《重构》一书中两顶帽子的比喻,它将开发软件时需要分配时间的两种行为:添加新功能和重构比喻为两顶帽子。添加新功能时不对代码做任何结构的调整,而重构时也不添加任何新的功能。在软件开发的过程中我们需要不断地变换两顶帽子。当我们为添加新功能时每写入一段新的代码,如果发现此时需要重构,便可以立即暂停对新功能的开发而进行重构。重构后又可立即转回继续开发新功能。

5 重构中测试的重要性

重构过程中最怕的一个点就是当我们变更了代码结构后,为代码加入了新的bug,或是原本的程序在重构后运行结果不符合预期。因此,为了保证重构的正确性,测试必不可少。

在重构开始前,我们需要保证有一套完整的针对需要重构的代码部分的自动化测试。当然,这个测试可以是自动化测试脚本,也可以是单测。在重构的过程中,需要保证哪怕进行了一些微小的变动都进行一次测试,确认运行结果与重构前一致。文章来源地址https://www.toymoban.com/news/detail-731907.html

到了这里,关于重构从现在开始的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CH02_重构的原则(什么是重构、为什么重构、何时重构)

    重构(名词):对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。 重构(动词):使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。 重构的关键在于运用大量微小且保持软件行为的步骤,一步

    2024年02月11日
    浏览(27)
  • 重构——IdGenerator重构分析过程

    本文为《设计模式之美》的第34-38章的学习笔记,主要从一个IdGenerator类出发,一步一步将代码优化为可读性,可扩展性,可测试性优秀的代码。 主要记录优化过程以及个人思考。 相关源码可以从https://github.com/WeiXiao-Hyy/design-patterns获取,欢迎Star! 在微服务开发中生成唯一请

    2024年04月17日
    浏览(24)
  • 现在学习云计算,还有出路吗?

    现在学习云计算,还有出路吗? 当然有出路,现在正是学习云计算的好时机。只要你专业技术过关,有一定的项目经验,有的企业甚至接受应届生;其次是具备一定的职业素养,学历在大专及以上,年龄不超过30岁,基本都能找到云计算相关岗位工作。 如果你满足学历年龄的

    2023年04月26日
    浏览(29)
  • DBA-现在应该刚刚入门吧

    说来话长 在2023年以前,我的DBA生涯都是“ 孤独的 ”。成长路径除了毕业前的实习期有人带,后续几乎都是靠自学。如何自学,看视频、看文档、网上查阅资料、项目实战。 可能是学疏才浅 ,一直都是在中小公司混,在中小公司通常缺少DBA大牛,很多时候想与业界大佬交流

    2024年04月26日
    浏览(28)
  • 现在office都要收费吗?

    我们使用电脑最早接触使用的基本都是微软的office,在很多人的脑海里,误以为office办公软件是免费的,但事实上,微软office软件是由专业人员来开发和需要维护的,当然会收取一定的费用,现在我们很多人电脑上面使用的都是盗版办公软件,所以没支付费用。正版微软的

    2024年02月11日
    浏览(30)
  • HDFS 的健壮性体现在哪里?

    本文隶属于专栏《大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见大数据技术体系 HDFS 的主要目标就是即使在出错的情况下也要保证数据存储的可靠性。 常见的三种出错情况是 Namenode 出

    2024年02月07日
    浏览(26)
  • 现在学习python怎么样

    Python,年龄可能比很多读者都要大,但是它在更新快速的编程界却一直表现出色,甚至有人把它比作是编程界的《葵花宝典》,只是Python的速成之法相较《葵花宝典》有过之而无不及。 Python简洁,高效的特点,大大提升了程序员的编码速度,极大的提高了程序员的办公效率,

    2023年04月13日
    浏览(38)
  • 现在还值得学Python吗?

    今年是23年,互联网大裁员,计算机行业的小伙伴也深有体会,那么还没有入行的我们要怎么去选择编程语言?一文简单带你分析你应该值得去学什么 原文地址,未来会持续更新Python面试题、前后端分离项目,点击链接前往 值得去学Python,不管是作为第一编程语言还是第二编

    2023年04月09日
    浏览(21)
  • 我现在必须new一个对象!!!

    目录 前言 1.new 2.delete 3.底层逻辑 4.定位new 5.对比 🎃之前在使用C语言的时候,我们便使用  malloc  和  calloc  等函数进行动态内存的开辟。但  C++  之中又引入了两个操作符  new  和  delete  来代替 C 语言中的函数进行动态内存的管理。下面就一起来学习如何使用吧。 🎃使

    2023年04月18日
    浏览(27)
  • Day936.如何重构过大类 -系统重构实战

    Hi,我是 阿昌 ,今天学习记录的是关于 如何重构过大类 的内容。 在过去的代码里一定会遇到一种典型的代码坏味道,那就是“ 过大类 ”。 在产品迭代的过程中,由于缺少规范和守护,单个类很容易急剧膨胀,有的甚至达到几万行的规模。过大的类会导致发散式的修改问题

    2023年04月25日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包