作为一名软件开发,您是否认同“如果代码有效,就不要修复它”这一理论?

请大家关注我的公众号,“老胡聊Java”

这句话非常有道理,因为这句话不仅包含了技术,而且还包含了人情世故。

1 一个项目的代码动辄几千几万行,而且分布的位置也不同,比如有java代码python代码,甚至还可能有数据库SQL代码,你修改了其中一段,谁也不知道其它哪些地方调用了它。

而且哪怕你全局搜索了项目,也未必能确保其它项目,比如其它子模块或数据库SQL语句,一定没有调用它,所以你修改了,真可能会引发问题。

2 当下的代码大概率是经过多轮测试,即跑到现在是正常的。但如果你修改了不出问题还好,如果出了问题,别人一定第一时间会认为是你的责任,项目经理第一应对的措施,不是说让排查问题,而大概率是让你改回去。

3 而且你去修改这段代码,如果是远古代码,原作者已经离职,这还好说,如果原作者是你的同事,人家会怎么想?不少人会认为,你去干涉了他的工作,或者冒犯了他的工作领域。

当然如果你改得有道理,或者没有引入问题,那还好说。但如果引出问题,或者问题出在你改动代码所在的类甚至是模块,那么出问题,别人真会说,本来是好的,但xx改动后出了问题。这样哪怕原来代码就有问题,你一时半会还很难说清楚。

4 站在项目经理的角度来考虑,第一要义是能按时正常地把项目发布出去。这个过程中,哪怕有隐藏bug,但如果客户或测试没测出来,只要别让人说“发现了但不修改”,项目经理是没责任的。

具体来说,项目发布前会有套回归测试的流程,如果有隐藏bug,但回归测试没发现,出了问题,真可能是测试和开发一起分担。但如果发布前,有开发人员在功能正确的前提下,依然用所谓“代码重构”的理念去修改,那就属于多事。项目经理一般不会表扬,虽然不会批评,但至少会腹诽。

5 和项目发布相关的所有人,其主观上一定是期待项目能正确发布,或者是,至少别在我手上出问题。很多话只能说,比如期望代码高质量,或者代码架构好,这些话一定只是说给客户和领导听。

但如果真去照有些标准去做了,比如真去没事重构代码了, 大概率会增大别人的工作量。比如项目经理会因此担责,测试人员得多测,而且真出了问题,所有人都会承担连带责任。

当然如果修改的时候,你说你的出发点是为了代码质量或架构,那别人还真没法说,但这种事情尽量别多做。

6 当然开发项目时,确实得确保代码的质量,但这第一得有人牵头做,第二得有明确的标准。比如某项目在开发时,由项目经理或测试leader负责质量,是用某扫描工具,发现有问题,比如重复代码过多或命名不规范,会让人修改。

不过如果有人私下发起,这不免有越俎代庖之嫌,或者重构代码时不按规范随意修改,这就属于不可控的风险。

7 比如在面试中,有程序员说,我在做项目时,当看到现有代码有架构等方面的问题,我会顺手重构。那么这其实并不是加分项。或者是,比如有人说,自己经常会重构项目代码,那么有经验的面试官,大概率会质疑其项目的真实性。毕竟很多项目开发时间很紧,没有专门的时间来重构代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/607275.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Tomcat安装与配置(详细教程)

一、安装Tomcat服务器 1.下载地址(Tomcat官网)http://tomcat.apache.org/ 2.将下载的zip文件解压到指定的目录(例如:D盘,目录不要有中文) D:\apache-tomcat-9.0.43 二、配置Tomcat环境变量 (…

鸿蒙UI复用

鸿蒙UI复用 简介BuilderBuilder的使用方式一Builder的使用方式二Builder的使用方式三 Component使用Component复用UI 简介 在页面开发过程中,会遇到有UI相似的结构,如果每个UI都单独声明一份,会产生大量冗余代码,不利于阅读。遇到…

ai可以做思维导图吗?当然是可以的!

ai可以做思维导图吗?在快节奏的现代生活中,思维导图作为一种高效的信息组织和表达工具,越来越受到人们的青睐。随着人工智能(AI)技术的不断发展,AI思维导图软件也应运而生,它们不仅能够帮助用户…

软件接口测试规范流程

1、需求分析 1.1 确认测试目的和测试对象: 了解需求并明确测试目的,如测试一个本地 API 还是跨网站的远程 API。 1.2 确认测试的基本条件: 确定测试所需的测试数据,测试环境以及测试团队中的角色和职责。 1.3. 对接口文档进行验证&#xf…

兄弟DCP-7057激光打印机报错误代码EC检修及分析

故障描述: 兄弟DCP-7057激光打印机屏幕显示无法打印EC关闭电源,然后重新打开打印机。 故障检修及分析: 1、定影单元风扇的插线连接不良 检查定影单元风扇的插线连接并重新连接; 2、定影单元风扇故障 更换定影单元风扇&#xff1b…

Segmentation fault (core dumped)排查

先泼盆冷水,这个问题比较棘手,有的能通过重装opencv相关包修复,有的可能还是直接换一个没问题的环境比较快…… 我最后是没有解决的,折腾了几个小时后,还是听同事的话,把docker镜像重启了,幸好…

day04—java基础之方法详解

方法概述 方法是具有特定功能的代码集合,由于我们是把重复的代码写到方法当中,以后要用直接调用方法即可,不需要再写一遍了。代码相当于只写了一遍。所以可以提高代码的复用性。如果要修改代码,我们也只要修改一处即可&#xff0…

JavaSwing技术实现一个电子表程序

使用JavaSwing技术实现一个简单的电子表盘,如下所示。 下载链接 有兴趣的读者可以点击链接下载,博主承诺绝对真实有效。

bert-NER 转化成 onnx 模型

保存模型 加载模型 from transformers import AutoTokenizer, AutoModel, AutoConfigNER_MODEL_PATH ./save_model ner_tokenizer AutoTokenizer.from_pretrained(NER_MODEL_PATH) ner_config AutoConfig.from_pretrained(NER_MODEL_PATH) ner_model AutoModelForTokenCl…

VIsualGDB : 快速入门系列

《VisualGDB : 解决编码导致的编译错误》 《VisualGDB : 在windows上开发和调试Linux代码(一)》 《VisualGDB:为Linux项目添加系统依赖库》 《VisualGDB:Linux动态库项目创建、编译及库的使用》 《VisualGD…

Web3空投入门:如何增加空投成功的几率

今天分享空投如何避免限制以提高效率,增加成功几率,首先我们来了解什么是空投加密,有哪些空投类型。 一、什么是空投加密? 加密货币空投是一种营销策略,包括向用户的钱包地址发送免费的硬币或代币。 加密货币项目使用…

Linux网络编程(三)IO复用三 epoll系统调用

三、epoll系统调用 epoll是Linux特有的I/O复用函数。它在实现和使用上与select、poll有很大差异。 epoll使用一组函数来完成任务,而不是单个函数epoll把用户关心的文件描述符上的事件放在内核里的一个事件表中,从而无须像select和poll那样每次调用都要…

Python从0到POC编写--实用小脚本

UrlCheck: 假设我们要对一份 url 列表进行访问是不是 200 , 量多的话肯定不能一个一个去点开看, 这个时候我们可以借助脚本去判断, 假如有一份这样的列表, 这份列表呢,奇奇怪怪,有些写错了…

Golang——Strconv包

func ParseBool(str string) (value bool, err error) strconv包实现了基本数据类型与其字符串表示的转换,主要有以下常用函数:Atoi(),Itoa(),parse系列函数,format系列函数,append系列函数。 1.1 string与…

6份不用辞职就能赚钱的副业,上班族必看!

在这个经济浪潮中,生活成本的上升与工资增长的缓慢形成了鲜明对比。对于许多上班族来说,寻找额外收入的途径显得尤为迫切。 今天,就让我们一起探索那些适合在业余时间开展的副业,为你的财务自由之路添砖加瓦。 1. 闲鱼二手手机售卖…

SEO之高级搜索指令(三)

初创企业需要建站的朋友看这篇文章,谢谢支持: 我给不会敲代码又想搭建网站的人建议 新手上云 (接上一篇。。。。) 11、link: link:也是SEO 常用的指令,用来搜索某个url的反向链接,既包括内部链接&#xf…

python编程“常识”【pip安装路径、计算、pycharm中的terminal运行前面的PS修改成自己环境】

一、默认的pip install包路径: pip show pip 二、计算 打开cmd,输入: ipython 例如你要计算2的13次方: ok. 三、pycharm中的terminal运行前面的PS修改成自己环境 未修改前: 修改过程: 打开设置找到too…

渗透之sql注入---宽字节注入

宽字节注入原理: 宽字节注入就是在对用户输入进行处理时,将编码方式改变,当某些关键字符被过滤(转义)时,我们可以使用其他的编码在被转义的字符前面,这样就可以组成一个新的字符从而来实现绕过…

【备战软考(嵌入式系统设计师)】10 - 软件工程基础

这一部分的内容是概念比较多,不要理解,去感受。 涉及的知识点是嵌入式系统开发和维护的部分,也就是和管理相关的,而不是具体如何进行嵌入式系统开发的细节。 系统开发生命周期 按照顺序有下面几个阶段,我们主要要记…

WPF容器控件之WrapPanel、布局控件

WrapPanel: 换行panel 子元素进行换行&#xff0c;当子元素的宽度或者高度超出了父元素&#xff0c;才进行换行。高度超出父元素的高度 也会另起一列 属性 Orientation布局方式 实例 <WrapPanel Orientation"Horizontal"><Label>C# 是从 C/C 衍生出来的…
最新文章