[干货满满] 给大家分享个 Java 工具库,绝对能提高你的工作效率 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
17701762115
V2EX    程序员

[干货满满] 给大家分享个 Java 工具库,绝对能提高你的工作效率

  •  
  •   17701762115
    LJWLgl 2020-05-26 12:49:21 +08:00 5577 次点击
    这是一个创建于 1966 天前的主题,其中的信息可能已经有所发展或是发生改变。
    40 条回复    2020-05-27 13:19:47 +08:00
    0x666666
        1
    0x666666  
       2020-05-26 14:42:52 +08:00   2
    hutool 不够好用?
    luckyrayyy
        2
    luckyrayyy  
       2020-05-26 14:45:02 +08:00   2
    是我 guava 提不动刀了,还是 apache commons 不给力了,hutool 不香吗?
    Kilerd
        3
    Kilerd  
       2020-05-26 14:45:42 +08:00   4
    PR 要求
    注释需要完备,应该对新增的每个方法标注方法说明,同时对传入参数和返回参数也要相应的说明
    充分的 Unit Test,保证每行代码和分支都要覆盖到


    然而我看了以下你的代码,你也没做到这几点啊。
    注释没有,UT 也几乎等于无。


    己所不欲,勿施于人。
    AprilNovember
        4
    AprilNovember  
       2020-05-26 15:18:29 +08:00
    @Kilerd 扎铁了,老心。话说你这狗头咋发的,我去微博复制过来也没用,可恶
    Kilerd
        5
    Kilerd  
       2020-05-26 15:24:10 +08:00
    @AprilNovember #4 装一个 V2EX plus chrome plugin
    AprilNovember
        6
    AprilNovember  
       200-05-26 15:26:20 +08:00
    @Kilerd 好吧, 原来是插件,这就去,哈哈,感谢
    warcraft1236
        7
    warcraft1236  
       2020-05-26 15:53:17 +08:00
    没看具体实现,就去 ut 部分看了一下,感觉不太行
    xiaofan2
        8
    xiaofan2  
       2020-05-26 15:55:22 +08:00   1
    =.= 轮子哥
    KentY
        9
    KentY  
       2020-05-26 17:23:50 +08:00   1
    点进去扫了几眼. 先说结论, 这应该不是按照公共产品要求的一个项目, 而更像是学习实践类的东西. 不建议在实际项目里应用.

    点看了几个文件的代码, 看的不多, 说说一眼看去的几个感觉, 你斟酌:

    - java doc 你注重 @author, 没什么但是 @since 不是时间, 而是某 method 是什么版本引入的
    - 避免拼写错误, 特别是 package name, 比如"modle" 没这个东西
    - package name 一般是单数, 当然你非要用复数也可以, 但是要统一, 不能一会这样, 一会那样. 同理, class name 也是
    - 大都是 utilclass, static methods 挺好的, 但是要 DRY, 你里面很多自我重复的逻辑实现, 万一哪里有问题, 你要改所有的地方. static 也是可以抽离的
    -至于注释, test coverage, 就不说了, 上面有人说过
    KentY
        10
    KentY  
       2020-05-26 17:35:19 +08:00
    @0x666666 @luckyrayyy 刚回复完看到你们提的 hutool... 完全没听说过.... 别说用了.
    去看了一下..中文局限的项目可能会比较合适.应该以后也是没有机会用. 在日常使用里, 有哪些比 guava, apache commons 好的地方? (你们的感受).
    luckyrayyy
        11
    luckyrayyy  
       2020-05-26 17:38:26 +08:00
    @KentY 文档啊,中文省事,另外就是功能多吧,常用的都有。都是工具类没怎么挑过,一般都是用其中一个,没做过横向对比...
    0x666666
        12
    0x666666  
       2020-05-26 17:39:17 +08:00
    @KentY #10 用起来是差不多的,但是 hutool 工具比 guava 和 commons 更多,基本上你能想到的工具,hutool 都有。
    KentY
        13
    KentY  
       2020-05-26 17:43:59 +08:00
    @0x666666 @luckyrayyy 谢谢你们分享感受.
    也许有一天它国际化了, 我能有机会试试.但是说服同事引用一个新依赖, 而舍去 apache commons or guava 应该是几率非常小的事.
    0x666666
        14
    0x666666  
       2020-05-26 17:47:42 +08:00
    @KentY #13 可以自己起新项目的时候用。我也是去年开始用 hutool 的 之前也是 common-lang3 包和 guava 的用户
    hikarugo
        15
    hikarugo  
       2020-05-26 17:49:19 +08:00
    建议移动到推广节点=。=
    KentY
        16
    KentY  
       2020-05-26 17:57:08 +08:00
    @0x666666 天天工作都是 java, 自己就是想玩点什么 也基本不用 java 了.
    而且对只有中文文档的东西有点抵触, 特别是代码里的中文注释, 中文常量. 希望他们有天能改进, 得到更多人的使用和检验. 好东西总会发光, guava 出现的时候也已经有 apache commons 了, 今天不是一样可以成为主流么.
    0x666666
        17
    0x666666  
       2020-05-26 17:59:06 +08:00
    @KentY #16 你咋跟我前公司 CTO 一样,鄙视中文的东西
    0x666666
        18
    0x666666  
       2020-05-26 17:59:38 +08:00
    @KentY #16 我觉得工具这个东西吧 好用最重要
    KentY
        19
    KentY  
       2020-05-26 18:07:42 +08:00
    @0x666666 你误解了, 我不是鄙视中文的东西. 这给我扩展的也太大了.
    中国人做了很多特别好的软件产品以及库. 但是, 如果没有英文文档, 开源, 并代码里都是中文的, 一般不会得到特别广泛的应用. 也就不能得到更广泛的测试和检验.
    这里不光是中文, 任何其它语言也是(除英语外). 我们的项目里明确有介绍, 只要涉及技术文档, 代码, 注释, 必须用英语. 以前还有同事写的变量名, 注释是德语的....
    17701762115
        20
    17701762115  
    OP
       2020-05-26 19:04:06 +08:00
    @Kilerd 大都工具类在我别的项目都已经测试过了,当然,后面我会在这个项目中补起来
    17701762115
        21
    17701762115  
    OP
       2020-05-26 19:17:34 +08:00
    @KentY 首先感谢你中肯的评价,这个项目我个人觉得确实想一个 best-practise 。你建议中的 test coverage 方面,需要说明一下,该项目大都工具类我都已经其他项目实践过,unit test 也是全 cover 了。当然对你的其他建议,我也会结合项目来做改动,最后,十分感谢你能认真阅读我的代码,同时给出了很好建议。
    anyele
        22
    anyele  
       2020-05-26 19:23:35 +08:00 via Android
    hutool 不香? 而且为啥用拿 guava 这些库比较,你没看名字带有 Google Apache 吗
    KentY
        23
    KentY  
       2020-05-26 19:43:40 +08:00
    @17701762115 我并没认真读你的代码, 只是看了几个 class, 比如那个 DateUtil and the DecimalUtil, 就看到哪说哪. 也不一定对. 反正学习呗.
    - 还有我刚忘了是 DecimalUtil 里还有个 public main, 只是把 void 改成了 int 返回个 0, 不知道是啥意思?
    - 你对"best-practice"这个短语的理解可能有误 我猜你想说"一个好的练习场" 但是那个短语不是这个意思.
    - test 我没看, 只是前面评论说你 coverage 不全. static methods 还挺好 test 的.
    CismonX
        24
    CismonX  
       2020-05-26 20:22:03 +08:00
    刚点开 README 就发现一个 typo

    > getCurrentDate(),获取当期日志,只包含日期
    Kilerd
        25
    Kilerd  
       2020-05-26 20:25:13 +08:00
    https://github.com/LJWLgl/CommonUtil/blob/master/src/main/java/io/github/ljwlgl/util/NetworkUtil.java#L91

    就单从获取 ip 这个 load 的方法,我就质疑这东西的实用性。 吞掉了所有 Exception,还 sout 出来一个字符串。
    17701762115
        26
    17701762115  
    OP
       2020-05-26 20:41:36 +08:00
    NetworkUtil 是参考了 Cat 内部的实现,我没有做过多的改动,后面我重新梳理一下,把该抛出的异常都会抛出,当然,开源的一部分目的就是接受大家质疑和批评,然后去不够改进,所以多谢你的意见。
    17701762115
        27
    17701762115  
    OP
       2020-05-26 20:42:18 +08:00
    @Kilerd
    NetworkUtil 是参考了 Cat 内部的实现,我没有做过多的改动,后面我重新梳理一下,把该抛出的异常都会抛出,当然,开源的一部分目的就是接受大家质疑和批评,然后去不够改进,所以多谢你的意见。
    17701762115
        28
    17701762115  
    OP
       2020-05-26 20:48:02 +08:00
    @KentY
    - public main 应该测试代码,后面我会移除
    - best-practice 你可以理解成最佳实践,是将重要而又通用的东西独立出来
    - 是的,静态方法都不需要 mock
    17701762115
        29
    17701762115  
    OP
       2020-05-26 20:49:46 +08:00
    @warcraft1236 unit test 我会逐步完善,不过这些我都是在其它项目实践过的,可以放心使用
    17701762115
        30
    17701762115  
    OP
       2020-05-26 20:53:24 +08:00
    @luckyrayyy 哈哈,有志青年应该能提个锤去造轮子,至少能发现发现轮子是这么个造法。另外,此项目还是在初期,如果大家能经验所得一起投入这个项目中,这事还是很有意思的
    17701762115
        31
    17701762115  
    OP
       2020-05-26 20:58:58 +08:00
    @CismonX 需获取到秒可以通过
    DateUtil.stringToDate(DateUtil.dateToString(Calendar.getInstance().getTime(), DateUtil.YYYYMMDDHHMMSS))
    来实现,有臃长,后面我会提供一个 method 出来
    17701762115
        32
    17701762115  
    OP
       2020-05-26 21:00:48 +08:00
    echooo0
        33
    echooo0  
       2020-05-26 22:23:44 +08:00
    作者别灰心,能把轮子造好本身也是一种能力,加油
    17701762115
        34
    17701762115  
    OP
       2020-05-26 23:19:57 +08:00
    @echooo0 哈哈,谢谢了,我会把这个项目做好的
    chihiro2014
        35
    chihiro2014  
       2020-05-26 23:32:10 +08:00
    说 guava 也好,hutool 也罢。你们难道不知道 Spring 自带工具类么!!!
    yiyi11
        36
    yiyi11  
       2020-05-27 02:03:39 +08:00 via Android
    没用过 hutool,想了解的时候对 hutool 有个不好的印象,它的项目的 issue 打开数量极少,关闭时间很快。容我冒犯地说一句,就算是开源项目,但这种做法未免有点功利。
    mikulch
        37
    mikulch  
       2020-05-27 08:04:35 +08:00 via iPhone
    @0x666666 第一次听说,我也去看看。
    JRay
        38
    JRay  
       2020-05-27 09:31:55 +08:00
    hutool 最近在用,很舒服啊
    ChanKc
        39
    ChanKc  
       2020-05-27 09:46:56 +08:00 via Android
    做工具类也不是不可以,建议做完后拿 guava,Apache 甚至 openJDK 来对答案…这样就知道自己哪里做得不好了
    17701762115
        40
    17701762115  
    OP
       2020-05-27 13:19:47 +08:00
    @ChanKc 是的,Guava 里面代码思想都可以借鉴
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2982 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 101ms UTC 13:49 PVG 21:49 LAX 06:49 JFK 09:49
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86