有看到好几个层主回复不建议使用 hutool 没看到具体理由

2023-08-01 01:00:28 +08:00
 feitxue
特意单独开贴提问下
只有一个有具体讲到说是 hutool 整个引入太大了
其他几个没有讲到具体理由
是否遇到有什么大坑?
请大家不吝赐教
根据各位回复我需要评估下是否移除 hutool 的引用
14435 次点击
所在节点    Java
136 条回复
superchijinpeng
2023-08-01 10:15:38 +08:00
2023 年了,用 kt 吧
ZiChun
2023-08-01 10:18:23 +08:00
我上面说的我司踩过的坑
https://github.com/dromara/hutool/issues/2812
参考这个问题。
开源不是不能用,但是用了我相信绝大部分人不会每次都跟进最新版本的变化,修复了什么漏洞。
在这种情况下,生产环境我个人是不建议使用的。
ily433664
2023-08-01 10:19:25 +08:00
说一些我使用中的问题
1 、json 序列化日期格式,每次还要手动指定格式
2 、DateUtil 很多操作返回的是工具定义的 DateTime 类型
3 、http 请求的 url 参数,如果只有参数名没有参数值,会被直接忽略
4 、HttpUtil 会复用连接和 cookie ,导致生产环境出现过 bug
zpf124
2023-08-01 10:31:13 +08:00
我可以决定的项目里我会禁止引用 hutool 或者只引入核心,因为 uuid 和雪花 id 确实省得自己写了。

不想引入的原因很简单,同样一个 StringUtil ,存在以下选项的时候 spring,commons-lang3, guava ,commons-lang ,hutool 的时候我选择大厂背书或者社区核心维护的库优先于 小众群体维护的库不是很容易理解吗。

写代码连尽量不堆屎山的追求都没有,心态就是混口饭吃,那你不论干哪行都是咸鱼,当然了,当一天和尚撞一天钟的人也许才是大多数。

至于公司项目,不归我做主,我也没必要非当事逼逼着同事改代码,那爱咋样咋样,领导有追求我跟着干,大家都无所谓我也不逆势而为。
所以公司项目引入乱七八糟,上面那几个同功能的库都有,有的甚至会由于依赖导致重复引入了同一个库的不同版本,那就引呗,再加上有些同事自己攒了多年自己写的工具类,以及接入某写 SDK ,人家示例代码里的 util ,五彩缤纷。
ttthys
2023-08-01 10:33:43 +08:00
都干 Java 了还考虑包大不大的问题么,嫌包大的话直接 maven 打包的时候忽略第三方包不就好了,我想用 hutool 的大部分都是看有中文注释,功能比较全面才选用的吧
ZiChun
2023-08-01 10:34:20 +08:00
说一个很多人都没提到的点吧:

比较知名的开源库一旦出问题,你获取这个问题的信息渠道会比用国内的开源库广很多。
例如 log4j 一出问题,业内铺天盖地都是转发,绝大部分时候都能在线上出问题之前进行升级。
国内的一些开源库如果存在某些漏洞,基本只会在你自己的产品线上出问题了,你才可能搜到,这也是为什么不推荐在线上环境使用的原因。

如果要用,就要自己做好对该库的信息跟踪,如果引入一次 maven 就不管了,那只会变成屎山里的一坨。
lmq2582609
2023-08-01 10:38:38 +08:00
hutool 非常好用
sppan
2023-08-01 10:39:09 +08:00
遇到过的坑包括但不仅限于如下:
manhere
2023-08-01 10:39:15 +08:00
NIH 综合症
Nich0la5
2023-08-01 10:40:04 +08:00
我司禁用的理由是代码质量良莠不齐很难保证,本人没读过源码不清楚是不是事实
sppan
2023-08-01 10:41:19 +08:00
@sppan 1 、文件工具判断是否存在,在某个场景下会自动创建父级文件夹。
2 、md5 工具获取大文件 md5 性能接近于不可用。
3 、http 工具请求包数据有问题,忘了从哪个版本开始的了,我记得我提过 issue ,但是似乎没查到问题在哪。
LeegoYih
2023-08-01 10:44:10 +08:00
hutool 的问题:代码质量参差不齐; Coverage 太低;间接依赖与项目中的依赖存在冲突,主要是 Spring 相关的。

有其他高质量的依赖库可选,公司这么多年自己沉淀了很多工具包,如果是因为懒而直接引入一个 hutool-all ,那么是团队有问题。
xiaoshiguang9
2023-08-01 10:51:31 +08:00
@cnzjl 若依问题贴怎么搜啊
missya
2023-08-01 10:55:55 +08:00
国内开发✗
国外开发✓
ldlood
2023-08-01 10:59:01 +08:00
用这些工具,还特么鄙视这个工具鄙视那个工具,来找那微弱的优越感?
你有这能力,为什么不自己去写 Utils 啊
Plutooo
2023-08-01 11:09:00 +08:00
@itechnology 第一个问题是硬性要求,第二个问题不就是出现的问题吗,我也没说是线上报错吧,编译不报错运行报错你不觉得是一个徒增成本的问题?
runzekk
2023-08-01 11:09:42 +08:00
@liy333 啧啧,这种话都不能说了么,都是程序员,不参与国产开源贡献,反而自己还踩一脚、唾两口。
你真的看过 Apche commons 、Google Guava 、Spring Utils 社区么?你贡献过么?你没有深度参与过,你怎么评价的?
先说一些名词,方面,丝毫没有落地的对比,然后再说一些让你加入优化是 pua 的武断恶意观点。你真是国产开源的阻力。
cslive
2023-08-01 11:11:18 +08:00
spring 项目 ,apache 包都已经引入了,再引入 hutool 没必要
yule111222
2023-08-01 11:25:03 +08:00
用 Kotlin 吧,utils 本质上就不 OOP
zpf124
2023-08-01 11:39:51 +08:00
@runzekk 凭什么不能说,好与不好不是有客观事实评价标准的吗?

我说 apache commons 不好的时候我也得加入才行? 我说 apache BeanUtils 的 copy 性能特别差是不是得先给他们提 issue 才行?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/961357

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX