推广一个历经开发周期两年,并且应用过千万级别项目的工具箱。 大家看了之后可以多多给我提建议,也欢迎大佬们 star fork。
Thanks♪(・ω・)ノ
1
Terry05 2018-01-17 18:02:10 +08:00
然而地址呢?
项目名称呢? |
2
xiqian 2018-01-17 18:03:06 +08:00
连接呢
|
3
xiqian 2018-01-17 18:05:20 +08:00 1
|
4
SeanDragon OP @Terry05 #1 太抱歉了 忘加上了 3L 的正解
|
5
SeanDragon OP https://github.com/SeanDragon/protools
链接地址,多谢三楼。 |
6
SeanDragon OP |
7
TimePPT 2018-01-17 18:30:17 +08:00 1
东西是好东西
不过善意提醒下,如果是在职期间的「职务成果」,未经公司允许是不能直接以个人成果对外公开使用的。这块做好规避,否则即使公司解散了,公司法人还是能追责的。 当然,公司要是你自己的随便整。 |
8
SeanDragon OP @TimePPT #7 谢谢前辈提醒,写这个项目的想法是我个人提出的,使用到公司项目中这个想法也是我提出的,
并且领导同意了,而且后续两年期间中的开发 99%也都是我自己开发的 |
9
cchange 2018-01-17 18:41:05 +08:00 via iPhone
看起来不错
请问是否有 C#类似的工具箱呢? |
10
SeanDragon OP @cchange #9 抱歉 C#语言的我没有开发
|
11
TimePPT 2018-01-17 18:53:55 +08:00 1
@SeanDragon 这个……和项目是谁提出及谁主要做的没关系
「职务成果是指单位工作人员为了完成本职工作或主要利用了本单位的物质技术条件所产生的智力成果。职务成果是单位工作人员基于职务行为或职务便利进行创造性劳动产生的智力成果,单位依法对之所享有的专有权利。」 简而言之就是,公司给你发工资了,你利用公司的物质资源(软硬件、时间等)做了一套东西出来,你享有部分权利(署名权、各类物质奖励所得等),但总体归属是归公司的,没有公司同意你是不能擅自将这部分成果有偿或无偿转让、公开的。 比如鄙司,有很多部门和组都在维护公司的开源项目,但都是以公司名义进行,且在开源前是经高层领导审批,法务报备的 这块我比较敏感也是曾经有个哥们碰过线被前公司搞了,所以善意提醒下。 |
12
SeanDragon OP @TimePPT #11 嗯 非常谢谢前辈提醒 我已知利害关系,该项目开源没有问题。
|
13
TimePPT 2018-01-17 19:02:19 +08:00
@SeanDragon ☺
|
14
cuebyte 2018-01-17 19:05:18 +08:00
又多了一个中文项目
|
15
sunsulei 2018-01-17 19:24:37 +08:00
|
16
SeanDragon OP @sunsulei #15 哈哈 我个人喜欢这种风格,不过介于该项目已经开源,我会尽快的使用阿里的代码规范手册将所有代码过一篇。 谢谢前辈指出
|
17
K1W1 2018-01-17 19:31:09 +08:00
东西不错,不过我还是喜欢用 hutool,你可以参考一下,很大很全
https://github.com/looly/hutool |
18
sunsulei 2018-01-17 19:36:18 +08:00
|
19
SeanDragon OP @K1W1 #17 前辈,您好。我大致看了一下,hutool 的内容非常好,但是他对 web、jdbc 和日志框架等方面也进行了封装。
这一点可能是我们两个项目不同的地方,protools 更轻量化和简约。最后谢谢前辈推荐的项目,我会研究学习。 |
20
SeanDragon OP |
21
snakejia 2018-01-17 20:28:28 +08:00 via iPhone
收藏了
|
22
yanjinbin 2018-01-17 22:06:05 +08:00
可以踩吗 是没学过 Java 吗 ? 整这个破玩意 干啥? 有空好好学学 JDK guava 不好吗?
|
23
imNull 2018-01-17 22:08:19 +08:00 via Android
@SeanDragon 杭州考虑么
|
24
SeanDragon OP @yanjinbin #22 这个仅仅是对 J2SE 中我个人认为比较常用的工具的一个汇总,方便开发使用,没有别的意思。前辈如果要迁怒于学术不精,晚辈不才,请前辈拿出您学习精湛的项目让晚辈研究学习,谢谢。
|
25
SeanDragon OP @imNull #23 抱歉,最近只考虑北京,其他区域不考虑。
|
26
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 ?合适吗? |
27
yanjinbin 2018-01-17 23:01:36 +08:00
|
28
SeanDragon OP @yanjinbin #26 感谢提出的问题,关于代码细节您的建议可以提交 issues,也多谢您的建议。
1 初始化,抛出异常,我个人认为没问题。工具类都是静态调用,需要实例化对象的我没有用构造器内抛出异常。 2 这里的默认编码方式,我自认为应拥抱 UTF-8,所以在命名上欠妥,如果您有好的想法,可以提交 pr。 3 代码规范这方面,我在该贴的 16 楼提到了,我会抽出一些时间来按照阿里的规范手册来整理代码。但是最近忙于找工作,速度没那么尽人意。 4 命名方式,由于该项目早期也是在公司私库中的,难免有一些方法是因为项目需要,临时添加的,在命名有欠妥,这个还需要优化。 还是谢谢你的建议,我也建议您对代码细节更好的诠释可以提 issues 或者提交 pr。 |
29
yanjinbin 2018-01-17 23:13:32 +08:00
头一次见到 私有化构造器 还抛异常的
麻烦看看 JDK 源码 再让别人 star 好吗? |
30
yanjinbin 2018-01-17 23:14:13 +08:00
|
31
xingda920813 2018-01-17 23:17:54 +08:00 3
@yanjinbin
这个地方 JDK 源码里面, java.util.Objects 就是这么做的. 用于防止实例化 (包括反射的情况). public final class Objects { private Objects() { throw new AssertionError("No java.util.Objects instances for you!"); } } |
32
yanjinbin 2018-01-17 23:19:33 +08:00
既然你熟练掌握队列 ...
行啊 给你 2 小时时间 告诉我 线程的唤醒方式 队列的实现原理 https://seandragon.github.io/ 告诉我下 ConcurrentSkipListMap 或者难度低点 就 JDK8 的 ConcurrentHashMap |
33
SeanDragon OP @yanjinbin #32 今天晚上看见您说这么多,我看到了我应该学习的地方,我也表达了我的不满。
我在介绍中写的很清楚,这是一个历时两年开发出来的项目,我并没有说该项目有多么的厉害,还请前辈不要紧抓不放。 我也在成长,这个项目也在成长,项目中有很多缺陷不足,我也相信在你我乃至更多的愿意为开源项目做贡献的人会使这个项目越来越好。 前辈,我先睡了,谢谢你的建议,看得出来你指出问题也是希望这个项目更好,期待你的 issues 和 pr。 |
34
SeanDragon OP @xingda920813 #31 谢谢 V 友
|
35
zjp 2018-01-18 00:38:50 +08:00 via Android 2
有些看不下去。挑刺都挑到简历去了,这又不是求职贴
我如果有楼主一半谦逊就好了(´・_・`) |
36
zhix 2018-01-18 01:18:54 +08:00 1
认真地看完了 commons 和 http 中的代码结构和风格,想看一下楼主是怎么对方法进行单元测试的,结果发现 test 包下只有一个 package-info.java。
我认为楼主的出发点是好的,对常用代码进行封装以简化开发。但单层封装并没有使库的抽象程度提高,对于 API 的调用者来说只不过从学习标准库的调用方式变成了学习楼主提供的调用方式,而对于实际问题来说,使用 protocols 之前问题模型是什么样,使用之后还是什么样。 其次是毫无“单元测试代码”,也就是说没有任何代码能够证明楼主提供的封装库的可靠性,简单地归纳常用代码的同时也引入了新的操作,中间每一步都有可能出现问题,尤其是频繁使用的公共库,抛开知名度不说,没有单元测试的支持让我很难在众多公共库中选择楼主的 protocols。楼主可以阅读一下 OkHttp、Netty、Guava 的单元测试代码,或者了解一下 JUnit 和 Mockito 的使用。 一点建议,供楼主参考。 |
37
SeanDragon OP 您好,前辈。就单元测试这一点,我原来是有大量测试文件的,您如果翻看 git 的历史便知,我昨天下午的时候全部删除了,因为这个项目已经经过两年检测,我想的是留着测试文件夹给大家做自己的测试。
|
38
dizhang1109 2018-01-18 05:43:40 +08:00 1
@zhix 同意楼上的观点。Github 上任何一个优秀的库都自带单元测试。没有单元测试的库经不起检验。
|
39
SeanDragon OP @dizhang1109 @zhix 谢谢两位前辈建议,我会将整体系统性的单元测试加上,已列入 future。
|
40
ihuotui 2018-01-18 08:49:51 +08:00 via iPhone
大家吐槽那么多,证明大家对代码质量高,从技术出发,并不是人身攻击,希望传播知识时不会误导其他人。
|
41
junbaor 2018-01-18 09:09:39 +08:00 via iPhone
自己学习可以,项目里还是好好用 apache guava 吧。
|
42
junbaor 2018-01-18 09:12:56 +08:00 via iPhone
顶一下楼主,上面那句没有恶意。
|
43
vance 2018-01-18 09:16:12 +08:00
简单看了下,发现槽点很多,看下 Guava 怎么实现的吧
|
44
micean 2018-01-18 09:31:05 +08:00
看了下 https://github.com/SeanDragon/protools/blob/master/common/src/main/java/pro/tools/data/text/ToolStr.java
toCamelCase 要完成 2 次遍历,join 参数是数组而不是不定参…… |
45
footman265 2018-01-18 14:25:11 +08:00
很多建议都很有用啊,楼主可以迭代吸收,这已经达到了把项目发出来的目的了
|
46
gmywq0392 2018-01-18 15:40:32 +08:00
@yanjinbin 印象中 effective java 有这一则的,避免类被不必要的构造。工具类正是该使用场景吧。有些源码的 utils 里也有这么写法的。
|
47
gowk 2018-01-18 23:03:40 +08:00 via Android
楼主从善如流的态度值得学习
|
48
lihongjie0209 2018-01-19 00:31:01 +08:00
楼主心态真好, 值得学习
|
49
SeanDragon OP 抱歉各位前辈,我这么长时间没回复。
原因就是这两天找工作,再加上电脑主板坏了。 大家给的建议我十分认可,这个帖子和 protools 这个项目产生的影响超出了我当时评估的程度。 我十分感谢诸位前辈提出的建议,我一定会吸取,一定会让这个项目更好,不过我也是有私心的,我想年前暂时休息下,给家人多留些时间。 所有的回复我都查看并仔细研读了,世界真美好,有广大热心的 v 友陪我一起度过。❤ |
50
RisingV 2018-03-02 14:29:35 +08:00
这样的项目真的不 make sense
|