Java 工具箱

2018-01-17 17:55:42 +08:00
 SeanDragon

推广一个历经开发周期两年,并且应用过千万级别项目的工具箱。 大家看了之后可以多多给我提建议,也欢迎大佬们 star fork。

common

http

mail

security

all

Thanks♪(・ω・)ノ

7577 次点击
所在节点    Java
50 条回复
snakejia
2018-01-17 20:28:28 +08:00
收藏了
yanjinbin
2018-01-17 22:06:05 +08:00
可以踩吗 是没学过 Java 吗 ? 整这个破玩意 干啥? 有空好好学学 JDK guava 不好吗?
imNull
2018-01-17 22:08:19 +08:00
@SeanDragon 杭州考虑么
SeanDragon
2018-01-17 22:16:23 +08:00
@yanjinbin #22 这个仅仅是对 J2SE 中我个人认为比较常用的工具的一个汇总,方便开发使用,没有别的意思。前辈如果要迁怒于学术不精,晚辈不才,请前辈拿出您学习精湛的项目让晚辈研究学习,谢谢。
SeanDragon
2018-01-17 22:18:08 +08:00
@imNull #23 抱歉,最近只考虑北京,其他区域不考虑。
yanjinbin
2018-01-17 22:53:15 +08:00
private StrConst() {
throw new UnsupportedOperationException("我是工具类,别初始化我。。。");
}

抛异常 ?



public static final Charset DEFAULT_CHARSET

取名问题 ? 我知道你默认的是啥?

https://github.com/SeanDragon/protools/blob/master/common/src/main/java/pro/tools/data/decimal/Decimal.java

代码 规范 多余的行


getDivGetInteger(Object object) {}

名字这么取???

用 Object ?合适吗?
yanjinbin
2018-01-17 23:01:36 +08:00
SeanDragon
2018-01-17 23:02:32 +08:00
@yanjinbin #26 感谢提出的问题,关于代码细节您的建议可以提交 issues,也多谢您的建议。

1 初始化,抛出异常,我个人认为没问题。工具类都是静态调用,需要实例化对象的我没有用构造器内抛出异常。
2 这里的默认编码方式,我自认为应拥抱 UTF-8,所以在命名上欠妥,如果您有好的想法,可以提交 pr。
3 代码规范这方面,我在该贴的 16 楼提到了,我会抽出一些时间来按照阿里的规范手册来整理代码。但是最近忙于找工作,速度没那么尽人意。
4 命名方式,由于该项目早期也是在公司私库中的,难免有一些方法是因为项目需要,临时添加的,在命名有欠妥,这个还需要优化。

还是谢谢你的建议,我也建议您对代码细节更好的诠释可以提 issues 或者提交 pr。
yanjinbin
2018-01-17 23:13:32 +08:00
头一次见到 私有化构造器 还抛异常的


麻烦看看 JDK 源码
再让别人 star 好吗?
yanjinbin
2018-01-17 23:14:13 +08:00
xingda920813
2018-01-17 23:17:54 +08:00
@yanjinbin

这个地方 JDK 源码里面, java.util.Objects 就是这么做的. 用于防止实例化 (包括反射的情况).

public final class Objects {
private Objects() {
throw new AssertionError("No java.util.Objects instances for you!");
}
}
yanjinbin
2018-01-17 23:19:33 +08:00
既然你熟练掌握队列 ...

行啊 给你 2 小时时间 告诉我 线程的唤醒方式

队列的实现原理


https://seandragon.github.io/

告诉我下 ConcurrentSkipListMap

或者难度低点 就 JDK8 的 ConcurrentHashMap
SeanDragon
2018-01-17 23:35:00 +08:00
@yanjinbin #32 今天晚上看见您说这么多,我看到了我应该学习的地方,我也表达了我的不满。
我在介绍中写的很清楚,这是一个历时两年开发出来的项目,我并没有说该项目有多么的厉害,还请前辈不要紧抓不放。
我也在成长,这个项目也在成长,项目中有很多缺陷不足,我也相信在你我乃至更多的愿意为开源项目做贡献的人会使这个项目越来越好。
前辈,我先睡了,谢谢你的建议,看得出来你指出问题也是希望这个项目更好,期待你的 issues 和 pr。
SeanDragon
2018-01-17 23:35:49 +08:00
@xingda920813 #31 谢谢 V 友
zjp
2018-01-18 00:38:50 +08:00
有些看不下去。挑刺都挑到简历去了,这又不是求职贴

我如果有楼主一半谦逊就好了(´・_・`)
zhix
2018-01-18 01:18:54 +08:00
认真地看完了 commons 和 http 中的代码结构和风格,想看一下楼主是怎么对方法进行单元测试的,结果发现 test 包下只有一个 package-info.java。

我认为楼主的出发点是好的,对常用代码进行封装以简化开发。但单层封装并没有使库的抽象程度提高,对于 API 的调用者来说只不过从学习标准库的调用方式变成了学习楼主提供的调用方式,而对于实际问题来说,使用 protocols 之前问题模型是什么样,使用之后还是什么样。

其次是毫无“单元测试代码”,也就是说没有任何代码能够证明楼主提供的封装库的可靠性,简单地归纳常用代码的同时也引入了新的操作,中间每一步都有可能出现问题,尤其是频繁使用的公共库,抛开知名度不说,没有单元测试的支持让我很难在众多公共库中选择楼主的 protocols。楼主可以阅读一下 OkHttp、Netty、Guava 的单元测试代码,或者了解一下 JUnit 和 Mockito 的使用。

一点建议,供楼主参考。
SeanDragon
2018-01-18 05:35:20 +08:00
您好,前辈。就单元测试这一点,我原来是有大量测试文件的,您如果翻看 git 的历史便知,我昨天下午的时候全部删除了,因为这个项目已经经过两年检测,我想的是留着测试文件夹给大家做自己的测试。
dizhang1109
2018-01-18 05:43:40 +08:00
@zhix 同意楼上的观点。Github 上任何一个优秀的库都自带单元测试。没有单元测试的库经不起检验。
SeanDragon
2018-01-18 08:33:26 +08:00
@dizhang1109 @zhix 谢谢两位前辈建议,我会将整体系统性的单元测试加上,已列入 future。
ihuotui
2018-01-18 08:49:51 +08:00
大家吐槽那么多,证明大家对代码质量高,从技术出发,并不是人身攻击,希望传播知识时不会误导其他人。

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

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

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

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

© 2021 V2EX