团队如何推进代码重构工作?

游弋天堂
• 阅读 288

认识重构

  • 本人所在的技术部有很多的产品,面向不同的用户,产品的建设过程是依赖于需求推动的。当需求明确之后,往往会伴随快速的开发,并且因为开发人员的经验,导致不同的代码模块会有不同的代码质量。当产品在演进过程中,发现不得不重构的时候,往往就已经到了非常难的境地。而重构带来的代码清晰,结构清晰,质量和稳定性还有效率都更提高的方式,能够使产品更为的健康。除了产品健康以外,重构的过程也能锻炼技术人员的技术思维和技术能力,使得他在构建另外的产品或新的任务时,能够规避已经发生的问题,获得更好的提高。长期来看,无论是人员经验的提升,还是产品健康度的提高,无疑为这个团队和这个团队所承接的产品起到了非常正向的作用。
  • 一个能够提出重构工作的开发人员,是他的主动性和能力的体现。

为什么大家不愿意做这项工作?

  • 这里我们从不同的视角来看待这个问题。从组织和领导的视角来看,如果组织层面或领导的风格,并不认为这是一件很有价值的事情,那么往往在推进的过程中,团队会自然而然的以交付为主而放弃质量;从个人来看,当我对这段代码重构的时候,很容易陷入不改,则没有问题,改则出问题的境地,那么出问题又要需要承担缺陷带来的影响,这就是所谓老的传统企业的,少做少错多做多错不做就不错;组织如果是快速变化缺少稳定性的,那么必然会追求短期的利益而重构,只会带来长期的利益,可能与团队的或者是团队领导人的利益的预期不一致。

  • 但是我们要看到作为技术团队中的一员,产品的健康度和代码的清晰是技术团队产生的直接价值,而所谓的产品的推广程度,还有用户量,则更多是以业务和运营驱动的结果。所以代码质量将是技术团队的核心竞争力,我们丢弃了重构的主动性,则同时丢弃了随时改善代码的可能性,因为代码不是一朝一夕的,不是通过一次大的运动就可以解决质量的问题。

如何解决?

  • 组织层面尽量让技术团队面向的产品和用户相对稳定,规避人员和团队的快速调整,使大家只重视短期利益,长期利益就会被忽略。
  • 领导在追求长期利益的前提下,应该更多的关注代码的质量,并且认识到好的代码质量是长期效率提高的基础。可见的是,一个结构清晰代码的产品,无论是演进还是迭代,都将事半功倍;一个长期处于亚健康的产品,将在后续的演进中投入更大的开发,收获更小的成效。
  • 团队应该以质量为第一目标,鼓励大家在发现产品代码质量的问题是第一时间评估解决,任何为了工期赶进度而丢掉代码质量的风气,都会被无限放大,最终导致失控。
  • 团队应该给每个人都会有清晰的负责的模块,包产到户,这样他就会对自己负责的代码的部分有更好的设计与开发。
  • 个人应该认识到,重构这项工作对个人能力的成长,还有个人实现自身的价值是一个非常重要的渠道。
点赞
收藏
评论区
推荐文章
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
雷厉风行 雷厉风行
1年前
Mac上最优秀的Ruby开发工具:JetBrains RubyMine 2023 永久激活码
JetBrainsRubyMine2023forMac是一款专业的Ruby开发工具,旨在使开发人员的工作更加高效和愉悦。这款软件提供了一系列强大的功能,包括智能代码补全、代码重构、调试和多种工具等。
架构师日记-如何写的一手好代码
在日常工作中,我经常听到部分同学抱怨代码质量问题,潜台词是:“除了自己的代码,其他人写的都是垃圾,得送到绞刑架上,重构!”。今天就来聊一聊,如何写的一手好代码。
云原生引擎单元测试实践
快速迭代的开发工作中如何提高代码质量一直是团队痛点,特别是没有测试支持的开发团队。合理的使用单元测试,并关注单元测试通过率、代码覆盖率可以有效提高代码质量。今天就来讲讲云原生引擎单元测试实践。
Stella981 Stella981
2年前
SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)
首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Easter79 Easter79
2年前
SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)
首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模
Wesley13 Wesley13
2年前
Java团队课程设计
Java团队课程设计socket聊天室(Day3)写了两天的项目,越写到后面越觉得这个结构太烂了,所以迫不得已只能重新搭建框架此前代码的冗余度太高,复用率低,于是今天重构项目重构后:!
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
京东云开发者 京东云开发者
10个月前
让代码优雅起来:记一次代码微重构实践 | 京东云技术团队
重构不仅能够提高代码质量,让代码优雅起来,同时也能让我们学以致用。我们所学的设计思想、原则、模式等理论知识,往往在重构中能够真正实践。
游弋天堂
游弋天堂
Lv1
男 · CMB · 系统架构师
水光潋滟晴方好,山色空蒙雨亦奇
文章
1
粉丝
0
获赞
0
热门文章

暂无数据