想了解一下 java.util.concurrent.ConcurrentHashMap,发现可读性太差了。
吐槽点如下:
以上或许都是为了追求极致性能,但是可读性真的太差了。
1
wsy2220 2020-08-21 09:30:00 +08:00 via Android 3
底层数据结构实现是可以为了性能牺牲可读性的
|
2
yangbonis 2020-08-21 09:36:22 +08:00 via iPhone
单个字母命名屏蔽垃圾信息,都是通用的逻辑,又不是业务,取名字反而是干扰。
|
3
yangbonis 2020-08-21 09:37:23 +08:00 via iPhone
你只是站在自己角度觉得可读性差,站在作者角度,说不定人家觉得很好。
|
4
40EaE5uJO3Xt1VVa 2020-08-21 09:41:48 +08:00 2
看到 jre 我就过来了 www.injdk.cn
|
6
lamy 2020-08-21 09:49:12 +08:00 via Android
和 c++ stl 比一下
|
7
Still4 2020-08-21 09:49:38 +08:00
|
8
flippydoo 2020-08-21 09:56:16 +08:00 via iPhone
这可读性都能差?但凡你好好看了 chm 类上面的注释和属性注释都不会这么讲,douglee 差不多用注释写了篇论文了
|
9
ChanKc 2020-08-21 09:57:23 +08:00 via Android
函数里面单个字母还挺正常的
位运算看习惯就好,很多和 2 相关的运算,用位运算都比乘除要快。而且我看位运算的基本都有注释。 |
10
sockpuppet9527 2020-08-21 10:33:18 +08:00 1
1. 局部变量单个字母命名:个人习惯问题,一般为单次首字母,看多了也习惯了,kernel 里面长词也会这样,打个比方,super block = sb , inode = i or n , Group Descriptors = gdt, Multiple mount protection = mmp
2. 位运算:位运算很常见也很方便,如果不明觉厉我个人会认为这是你的问题,举个简单的例子:掩码,再举个简单的例子:两个 32 位变量支持 64 位变量。 如果不用位运算,去写一大堆逻辑来支撑某个功能,那样做反而更复杂。 3. 魔法值:不知道楼主说的是不是 Magic number 。如果是的话,那我想说,如果你是 jre 的维护者,你不考虑版本兼容问题? 其他逻辑上的,大项目的基础功能都是这样的,面向的不是业务,考虑的东西以及开发的经验都是日积月累的。 |
11
sockpuppet9527 2020-08-21 10:38:59 +08:00
@sockpuppet9527 #10 补充一下,JRE 最少还有注释,还不断重构。
一些维护十年、二十年的开源项目注释都很少,patch 打的多了也不重构(开发者无精力),兼容多代的版本,兼容多个平台(指 OSX/WIN32/SUN/UNIX/LINUX),甚至因为 GCC 版本问题而弄得一些兼容(特指不通过 CONTAINER_OF 转型,直接强转)。这类看起来才是头大。 开源就是这样的,如果面对单一业务线,精简很多,也不需要考虑那么多。 |
12
chihiro2014 2020-08-21 10:40:44 +08:00
啊这,JDK 的东西和 JRE 有啥关系。JUC 里面的注释已经足够好了,至少市面上没有比他更好的文档。
|
13
taogen OP @chihiro2014 JDK 包含 JRE,还有开发工具,以及 Java 文档。JRE 是运行时环境,主要包含是 Java 标准库代码和其它运行时的代码。
|
14
chihiro2014 2020-08-21 10:51:30 +08:00
@taogen 啊这,长见识了
|
15
cccy0 2020-08-21 11:02:27 +08:00
@yanzhiling2001 #4 现在装环境基本都是从这下载, 还是很不错的 ( 话说木兰是放上去搞笑的么
|
16
j2gg0s 2020-08-21 12:43:18 +08:00
这种级别的东西,性能的优先级是远高于可读性的。
另一个骚操作是提高参与门槛 |
17
40EaE5uJO3Xt1VVa 2020-08-21 12:47:40 +08:00
@cccy0 鞭尸
|
18
newmlp 2020-08-21 13:34:22 +08:00
是你水平太菜
|
19
slyang5 2020-08-21 14:10:53 +08:00
有没有想过,是自己的水平不够呢 ?
|
20
taogen OP @slyang5 可读性差是事实。水平一般也是事实。
看过《 clean code 》,对代码的可读性深有感悟。我觉得性能固然重要,可读性也比较重要。 有些对性能影响不大的地方,可以适当地提升可读性。如,变量的名称,if 条件用一个方法封装,function 代码的结构层次化。 |
21
luxinfl 2020-08-21 14:40:14 +08:00
觉得可读性差,自己照着写逻辑呗,多好
|
22
xiangbohua 2020-08-21 16:47:08 +08:00 1
刚开始看吧,很容易发出这样的吐槽,对前人的代码要有敬畏心的嘛
等你看熟了,你的关注点就不再是什么变量一个字母啊这种细节,而是这地方怎么打破双亲委派的模型了啊,这种问题 |
23
Balthild 2020-08-21 22:27:56 +08:00
入职接手项目吐槽屎山的时候我也没见有多少人讲要敬畏前人的代码……
想到了启功先生提出的书画鉴定七大忌: 一、皇威 二、挟贵 三、挟长 四、护短 五、尊贤 六、远害 七、容众 |