是谁,代码毒害我

共 2601字,需浏览 6分钟

 ·

2023-09-22 11:15

大家好,我3y啊。本来我以为我平时在公司乱写代码,已经是一件很过分的事了。这两天遇到的问题,我觉得是真在代码里下毒,决定下班就回家写篇文章一吐不快。

不知道大家有没有听过「二方库」,首先来科普一下什么是二方库?

  • 一方库指的是本项目中的依赖
  • 二方库指的是公司内部其他项目提供的依赖
  • 三方库指的是其他组织、公司等来自第三方的依赖

我想象中的二方库:

  • 是公共的包。给各个系统去引用,这样就不用每个系统都写第二遍相同的逻辑。实际上在项目里,很多就是复制粘贴到多处,我他妈直接CV
  • 是版本控制和使用规范化。实际的使用场景,光一个log就有log4j log4j2 logback ,redis客户端光jedis就一堆版本,你升级了业务根本不升级。业务:我用得好好的,我升级个毛

OK,有了二方库的基础了以后,来介绍下我这两天遇到的奇葩事了。我这项目被maven管理,有十几个模块,其中xxx-common是一个二方库,xxx-service是主要的业务逻辑代码,这个项目都在同一个Git仓库下做代码版本控制。

最近因为调用外部接口的api要升级了,而外部接口的api的url是写在二方库xxx-common模块上。这本身是很合理的事,其他需要用到这个外部api的模块就不用在自己的系统上定义对应的url咯。

像这次升级的话,那只要改一处就好了,其他的模块只要引入新的二方库版本就OK咯,这很合理。

然而,我发现这个url被复制到处都是,一改就改了好几个模块。就比如像xxx-service 模块明明就有引入xxx-common模块,但它还是单独在系统上声明了url。

不过,这不是事,改起来很方便,现在ide太强大了,直接全局匹配出来,全局替换就完事了。

但是,为了后续好维护,我是想统一把这块抽取到xxx-common模块就可以了,后面就真的只改一处。然而,我发现了个事,各个模块依赖xxx-common的版本都不太一样

比如xxx-service依赖的xxx-common0.0.1版本,而xxx-service-v2依赖的xxx-common0.0.3版本,我隐约感觉到不对劲了,但我还是继续往下干。

显然,我肯定是基于现有xxx-common最新的版本的基础上去做改动的咯。整个项目的git仓库用的是master分支,我就理所当然地在master分支上修改xxx-common模块。

很快啊,我改完了,我把xxx-service依赖的xxx-common,升级到我新发的版本之后,发现项目压根就部署不起来。我一想,没理由啊,我就改了这么点东西,凭啥没有起来啊。就只是一个变量啊,大哥

看了半天,哦,原来xxx-common这个模块不是在master分支上改的,是由另外的分支去变更它的代码。你能理解吗,我是理解不了,你这样玩,你为啥在同一个Git仓库下管理啊!!!

这我忍了,我就切到对应的分支上去改吧。找出问题了以后,这也很快啊,我一会就搞掂了,于是我又重新打了个新的版本deploy在maven的仓库上,把xxx-service模块又重新部署起来。

阿欧,发现xxx-service模块又没起来,缺了别的java依赖。我又再次核对了下,分支是没错的,版本也是在xxx-service之前的所依赖的版本基础上改的,改动也就一个变量,这凭啥没起来啊!

怎么想都不对劲,后来我就去把我打的jar包跟上一个版本的jar包做了下对比(idea可以对比两个jar包的区别,又学到了些知识了)。

我发现,这差异不仅仅是我改的变量啊,还有好十几个类啊。这怎么解释呢?我能想到唯一的解释就是:上一个人把包发布到maven了,但是没有提交&推送(commint&push)代码

擦,这么狠毒啊!这怎么玩啊,花了我两天时间搞这个了,正常的需求我都还没做啊。原来可以这样在代码里下毒啊。


END


Java项目训练营

我开通了项目股东服务,已经有不少消息推送平台项目股东拿了阿里/vivo等大厂offer了。我是没找到网上有跟我提供相同的服务,价格还比我低的

👉一对一周到的服务:有很多人的自学能力和基础确实不太行,不知道怎么开始学习,从哪开始看起,学习项目的过程中会走很多弯路,很容易就迷茫了。付费最跟自学最主要的区别就是我的服务会更周到。我会告诉你怎么开始学这个开源项目,哪些是重点需要掌握的,如何利用最短的时间把握整个系统架构和编码的设计,把时间节省下来去做其他事情。学习经验/路线/简历编写/面试经验知无不言

👉本地直连远程服务:生产环境的应用系统肯定会依赖各种中间件,我专门买了两台服务器已经搭建好必要的环境🙉,在本地就可以直接启动运行体验和学习,无须花额外的时间自行搭建调试。

👉细致的文档&视频:巨细致的语雀文档11W+ 字,共106个文档,项目视频还在持续制作更新中(20个),不怕你学不会。

👉付费社群优质的社群里需筛选过滤,学习氛围是很重要的,多跟同辈或前辈聊聊,会少走很多弯路💯

👉清爽干练commit:专属股东仓库,一步一步从零复现austin,每个commit都带着文档&视频学习。

如果想获取上面的权益,可以看看👉Java项目训练营

浏览 3649
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报