首页 > 其他分享 >【研发笔记20251114】技术自信 &

【研发笔记20251114】技术自信 &

时间:2025-01-14 22:56:12浏览次数:1  
标签:setMobile 代码 笔记 vo replaceFirst getMobile 20251114 自信

技术自信

我们要拥有技术自信!

我们许多同学,是缺乏技术自信的。

我们习惯了代码有改动,就提测给测试组的同学来进行测试验证。

虽说有测试组,但有些开发改动,我们开发者,凭借我们的专业能力(技术能力),可以自己确信没有问题,可以不用一律提测。

例如:重命名一个底层工具类的public static方法,这会涉及到上层的项目跟着发生变更。对于这种重构来说,只要IDE可以compile通过,就没有必要走测试流程。IDE没理由compile不通过的,除非你不熟悉IDE的rename这个refactor操作。

再例如:某个Service类中的一个私有的读取数据的方法,我们变更查数据库由selectList然后返回第一条,改为等效的selectOne加limit 1的方式。这种情况,我们只需要保证junit单元测试可以正常验证通过,就不需要让测试同学去测试所有受影响的业务功能了。

类似此类的小改动,所依据的都是我们的编程技术,并未涉及业务逻辑方面的改动,我们应该是而且必须是可以hold住的。提测只会增加测试同学的工作量,于团队效能来讲,也是一种浪费。

拥有技术自信有什么好处?

技术自信会推动自己更深入、全面地了解技术,编写高质量的代码。编写高质量的代码,bug就会少,会进一步提升自己的技术自信。所以,这是一个良性循环的过程。长期处在这样的cycle里,自己会快速成长。

该做的事情,不因纠结细节而不做

外放接口要对请求参数中的用户手机号做一下兼容,将“08618812345678”中开头的086去掉,即改为“18812345678”。开发同学很快改完。

//将手机号以086开头的国际区号去掉
if(StringUtils.isNotBlank(vo.getMobile())){
    vo.setMobile(vo.getMobile().replaceFirst("^0861", "1"));

代码评审人给出了一条建议:可以一并兼容一下“86”、“0086”、”+86“开头的情况。

开发同学不太认同,言说请求方后续会修改他们的调用代码,不会再出现类似的情况了。如果兼容这些,代码会显得臃肿,并借口“程序执行会慢,影响最终RT”。

外放的这个接口,不止一个请求方在调用。因此,谁又能保证未来不会有类似的请求数据呢。

所以,兼容一下,是有道理的。至于说影响RT,就有些扯远了。

其实,代码评审人明白,开发者是认同一并兼容的,只不过他不愿意写下面这种臃肿的代码,这是他反对修改的真正理由。

if(StringUtils.isNotBlank(vo.getMobile())){
    vo.setMobile(vo.getMobile().replaceFirst("^0861", "1"));
    vo.setMobile(vo.getMobile().replaceFirst("^861", "1"));
    vo.setMobile(vo.getMobile().replaceFirst("^00861", "1"));
    vo.setMobile(vo.getMobile().replaceFirst("^\\+861", "1"));

代码评审人提供的代码是:

if(StringUtils.isNotBlank(vo.getMobile())){
    vo.setMobile(vo.getMobile().replaceFirst("^861|^\\+861|^0861|^00861", "1"));

至此,开发者不再认为臃肿,也欣然接受了。

再举一例。

我们对接的支付宝付款接口,偶尔会出现的一种情况是,异步回调 先于 同步响应。这种情况出现时,我们的回调处理逻辑,会因为违反状态机幂等而没能将交易变更为“付款成功”。

为了最大程序满足付款时效,针对这种情况,我提出了优化方案:当这种情况发生时,则延迟3s~5s,再去尝试异步将交易变更为“付款成功”。

我们的开发者在做这个优化时,改动了几版,总觉得代码不优雅。后来产生了放弃优化的念头,并认为这提高了代码复杂性且收益太小。

我们进一步沟通后,开发者最终完成了这项优化。

【结论】搞清楚要解决的问题。不要因为某个细节的纠结,而错误地认为要解决的问题没有意义。唐僧西游取经,假若唐僧留在了女儿国,可就是唐僧的问题了。

标签:setMobile,代码,笔记,vo,replaceFirst,getMobile,20251114,自信
From: https://www.cnblogs.com/buguge/p/18671858

相关文章

  • 《CPython Internals》阅读笔记:p151-p151
    《CPythonInternals》学习第9天,p151-p1510总结,总计1页。一、技术总结无。二、英语总结(生词:1)1.marshal(1)marshalingMarshallingormarshaling(USspelling)istheprocessoftransformingthememoryrepresentationofanobjectintoadataformsuitablefo......
  • 1、Grafana学习笔记
    Grafana是一个开源的数据可视化和分析平台,是网络架构和应用分析中最流行的时序数据展示工具,专门用于帮助用户实时监控和分析各种数据源(如时序数据、日志数据等)。Grafana被广泛应用于系统监控、性能分析、业务指标追踪等场景,特别是在DevOps、IT运维和数据分析领域中。一、Grafa......
  • 【学习笔记】函数复合:[PKUSC 2024] 排队
    函数复合是这样的一类问题:有一个函数序列\(f_1,f_2,f_3,...,f_n\)。离线询问,给定参数\(x\),\(f_r(f_{r-1}(...f_l(x)))\)的值。有点抽象对吧。看道题就懂了。[PKUSC2024]排队QOJ题目链接:#8672.排队。(反正我在其他OJ上没找到)前置知识:平衡树题面上有简化题意,但......
  • WebScoket学习笔记
    WebScoket学习笔记1.消息推送常用方式介绍轮询浏览器以指定的时间间隔向服务器发出HTTP请求,服务器实时返回数据给浏览器。长轮询浏览器发出ajax请求,服务器端接收到请求后,会阻塞请求直到有数据或者超时才返回。SSEserver-sent-event:服务器发送事件SSE是在服务器和客户......
  • 江科大STM32入门——读写备份寄存器(BKP)&实时时钟(RTC)笔记整理
    wx:嵌入式工程师成长日记https://mp.weixin.qq.com/s/hDk7QaXP8yfYIj1gUhtMrw?token=1051786482&lang=zh_CNhttps://mp.weixin.qq.com/s/hDk7QaXP8yfYIj1gUhtMrw?token=1051786482&lang=zh_CNRTC是一个独立的定时器,BKP并不能完全掉电不丢失,其可以完成一些主电源掉电时,保存少......
  • EPLAN P8 学习笔记 配图 20250114
    组织结构、细节会生疏。Pageproperties-Fullpagename、Pagetype、PagedescriptionFullpagename-StructureidentifiersMainProjecttree-IdentifierStructurePageTypeNameDescriptionPagesObject元素structure结构identifier.excalidrawProjectData-S......
  • 2024秋季学期 理论力学期末复习笔记
    参考资料[1]秦敢,向守平.力学与理论力学(下册)[M].科学出版社,2017.8.[2]曹利明.理论力学课程讲义[Z].中国科学技术大学,2024.拉格朗日力学哈密顿力学刚体部分......
  • 《构建之法》阅读笔记二
    深入探索团队协作与软件项目管理再次研读《构建之法》,团队协作与软件项目管理的内容让我感触颇深。软件开发中,团队协作至关重要,直接影响项目成败。书中指出,团队成员间的沟通与协作是项目推进的关键。不同角色成员,如开发人员、测试人员、产品经理等,只有紧密配合,才能保证项目顺利......
  • 《构建之法》阅读笔记三
    思考软件工程的创新与发展第三次阅读《构建之法》,我对软件工程的创新与发展有了更深入的思考。在快速发展的今天,软件工程领域也在不断创新。书中提到,技术创新推动软件工程发展。新的编程语言、框架和工具不断涌现,为软件开发带来便利。云计算、大数据、人工智能等技术的兴起,改变......
  • 【Vim Masterclass 笔记12】第 7 章:Vim 核心操作之——文本对象与宏操作 + S07L28:Vim
    文章目录Section7:TextObjectsandMacrosS07L28TextObjects1文本对象的含义2操作文本对象的基本语法3操作光标所在的整个单词4删除光标所在的整个句子5操作光标所在的整个段落6删除光标所在的中括号内的文本7删除光标所在的小括号内的文本8操作尖括号内的文......