首页 > 其他分享 >代码工作得很好,别碰它。

代码工作得很好,别碰它。

时间:2023-05-07 23:32:12浏览次数:32  
标签:重构 职业生涯 软件开发 开发人员 代码 工作 别碰 软件

破坏生产很容易!

image.png

软件开发中有一句老话,我在我的职业生涯中听到过很多次……

如果它没坏,就别修它。

你可以通过优化旧代码让自己陷入麻烦。

但是,当你可以的时候,也应该清理旧代码!

你如何决定——保持不变还是修复它呢?

我的代码很好用

现在Reddit上有一个有趣的GIF在传播……

image.png

它强调了我们经常知道我们的代码不适合这个领域!

随着时间的推移,我们可以非常确定代码将被误用或以奇怪的方式扩展。

即使在编写代码时,它可能看起来不是最好的解决方案。

怎么办呢?

权衡取舍

无论是你刚写的代码还是需要重构的旧代码——你如何决定该怎么做?

  • 一方面,代码工作得很好!敏捷软件开发认为够好就行了。你应该把时间花在更有价值的活动上。
  • 另一方面,把混乱、令人困惑或设计不良的代码留给其他人并不好!此外,当基础代码设计良好时,未来的更改和扩展会更容易。

在许多情况下,这可能是一个真正的困境。

软件开发都是关于权衡的。你将不断做出判断。是否进行重构就是其中之一。

不是看起来那么容易

你会发现,基础代码之所以复杂,是有原因的。

一开始,看起来好像有更好的方法。但是,当你深入重构时,你会发现有些边缘情况你没有考虑到。这个核心代码被使用的方式比你预想的要多。

通常,对一个基础代码的简单清理会引发一系列问题。需要花费数天或数周的时间跟进所有相关的部分。

当你试图修复基础代码时,你必须理解其范围。这个变化会有多大?它会影响系统的多少部分?你可以合理地期望重构需要多长时间?

我认为你应该总是假设它需要的时间是你想象中的两倍。

然后,你必须问自己:“值得吗?”

需要考虑的问题

在进行大规模重构之前,有些事情需要考虑:

  • 这个代码是应用程序的基础,因此可以使整个系统更易于维护吗?
  • 重构会经常帮助未来的开发人员,还是这段代码很少被接触?
  • 如果重构所需时间是预期的两倍,是否仍然值得?
  • 是否有更小的努力可以先行尝试,以获得完整重构的部分效益,作为测试改变的难度的一种方式?
  • 如果我花时间进行重构,那么将会有其他功能、改进和缺陷修复的机会成本。这个重构是否足够重要,值得这样做?

总的来说,我认为重构是一件好事!我喜欢让现有代码变得更好。我喜欢其他开发人员做这个工作,然后我可以享受到好处。

但是,我曾经在一些团队中,一次意外的重构工作耗费了我们开发人员的时间、精力和注意力,却没有带来太多的好处。

所以,请三思而后行,以清晰的思维进入你的重构工作。你的团队会感激你。

每日列表

我帮助软件开发人员建立有意义的、有目的的职业生涯。

与其他人不同——他们推荐追逐高薪、在精英公司(FAANG)工作或刻苦准备面试——我指导开发人员实现充实、平衡的软件职业生涯。

我的目标是帮助你开发可以让世界变得更好的软件。

2,000名软件开发人员会收到我的每日文章,直接发送到他们的订阅消息中。

如果你喜欢我的文章,点赞,关注,转发!

标签:重构,职业生涯,软件开发,开发人员,代码,工作,别碰,软件
From: https://blog.51cto.com/u_12409319/6252748

相关文章

  • 本地代码提交到远程
    1.创建仓库: 2.git远程操作命令gitremote查看远程仓库(如果没有则看不到): 3.git远程连接,git远程操作命令: ......
  • 工作提效___python实现测试用例统计
    一、工作中存在的问题:1、被测项目不断迭代增加新功能,功能模块越来越多,用例采用excel文档进行记录,每个sheet代表一级功能模块,每个sheet里面会有多个二级功能模块。由于功能模块较多,导致测试用例文档中存在几十个sheet页2、由于项目测试中,很多测试用例可以共用一条测试用例,为了减......
  • 特性介绍 | MySQL 测试框架 MTR 系列教程(二):进阶篇 - 内存/线程/代码覆盖率/单元/压力
    作者:卢文双资深数据库内核研发序言:以前对MySQL测试框架MTR的使用,主要集中于SQL正确性验证。近期由于工作需要,深入了解了MTR的方方面面,发现MTR的能力不仅限于此,还支持单元测试、压力测试、代码覆盖率测试、内存错误检测、线程竞争与死锁等功能,因此,本着分享的精神,将其......
  • git工作区,暂存区,版本库操作
    1.在a文件夹下执行命令:gitinitb: 2.gitstatus查看a文件夹下未被管理的文件: 3.命令:gitadda.text,把a.text提交到暂存区: 4.执行gitadd.全部提交到暂存区,再次查看状态,文件标绿,接入管理: 5.命令:gitcommit-m'添加注释'从暂存区提交到版本库: 6.再次执行gitstat......
  • 如何从develop分支拉取代码,开发页面和合并提交
    我以04官网为例子,在我开发页面的时候,第一步是先切到生产分支,然后不要用vscode自带的操作,改用gitpull拉取最新代码,,此时生产的页面是这样的  我再从develop拉出一个测试分支Jenkins,以及预发布分支release,此时我的需求是这个"开发分支"改成"本地分支",页面文字统一改......
  • MSBulid编译器过程出现“lc.exe已退出,代码为-1“的解决方案
    这几天在查看winform旧项目的时候,发现编译过程中会出现“lc.exe已退出,代码为-1”的错误提示,导致程序无法正确编译,在网上查了一下,最后找到解决方法。因为项目使用了Developer第三方库功能,其在组件的使用类定义了LicenseProvider(typeof(LicFileLicenseProvider))这个Attribute。......
  • ssi整合时的配置文件的核心代码
    以下是为科协备课时做的ssi例子中配置文件的摘要1、beans.xml<beanid="userAction"class="com.njupt.action.UserAction"scope="prototype"><propertyname="service"ref="userService"></property></bean>2、we......
  • 分享Python采集50个jQuery代码,总有一款适合您
    Python采集的50个jQuery代码下载链接:https://pan.baidu.com/s/1KoCOk4lM-A8arAsn-apcMw?pwd=k3qo提取码:k3qo现代时尚的js消息通知插件时尚简洁的js轮播图特效插件jQuery文字翻转动画特效插件jQuery移动端下拉刷新、上拉加载更多插件jquery和CSS3半透明垂直Accordion特效基于TweenM......
  • 分享Python采集80个jQuery代码,总有一款适合您
    Python采集的80个jQuery代码下载链接:https://pan.baidu.com/s/1TeAqNtMgbrQyaF5cg6dt6A?pwd=d51f提取码:d51f基于HTML5SVG的炫酷进度条插件js全屏快速预览图片特效jquery滑动侧边栏插件jSidejs和CSS3图片360度全方位3D预览插件jQuery和CSS3滑动展开菜单按钮插件33种css3开关按钮特......
  • 使用代码创建用户组 odoo
    首先在security目录下新增security.xml文件,并添加__manifest__.py引用,xml内容如下 <?xmlversion="1.0"?><odoo><data><recordid="module_xxx_title"model="ir.module.category"><fieldname=&quo......