V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
17701762115
V2EX  ›  程序员

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

  •  
  •   17701762115 ·
    LJWLgl · 2020-05-26 12:49:21 +08:00 · 5000 次点击
    这是一个创建于 1644 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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  
       2020-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 的用户
    fyxtc
        15
    fyxtc  
       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
    @xiaofan2 哎😌
    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   ·   实用小工具   ·   6029 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 06:11 · PVG 14:11 · LAX 22:11 · JFK 01:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.