规范

前些日子被要求按照《阿里巴巴java开发手册》来找现有代码中的问题。
我说我看过这个文档,没多大意思。
然后我在word里写了,代码格式部分全都可以通过eclipse设置来避免,其他部分绝大多数可以从《java并发编程实战》、《effective java》、《软件开发警戒案例集》、《改善java程序的151个建议》找到。
我被质问说,既然写出来了,肯定有可取的地方,不要抱着挑刺的态度而是学习的态度去看这个文档。我好无语。稍微看过几本书的人都很清楚这个阿里巴巴的规范实在没多大意思。
甚至里面的举的某些例子都是错的、作者本人都没研究过怎么使用eclipse只当成记事本来用的。不然的话,那这个文档就是写给最低级的码农看的。
好多人都有这种观念,就是比如,认为阿里巴巴的规范就是好的。认为看看大公司的规范自己就牛逼了,而不是看书看源码多思考多动手练习。
就说上面提到的第四本中,作者提到交行531工程,据我所了解到的,531工程中大多数人水平也就是那样。做这么一件事,就是一个String如果包含X,则截取从X到结尾的部分。
先indexOf然后subString,某513小组长看到冷嘲热讽说哎呦还indexOf > -1呢直接contains不就行了吗。实在让人无语,绝大多数人都是这样,写代码只是完成了功能,从没想过去做得更好一些。只要不出bug就万事大吉了。
不知道在人们眼中,交行软件开发中心算不算大公司。
前两本第二天就被买来了,某同事惊呼,这本是java四大名著之一啊。这位同事不会深度克隆、不会写泛型方法、不知道jdk5的foreach到底是个什么、甚至连个拼字符串都弄巧成拙。那么不知道Josh Bloch是谁也很正常了。
另一位同事看第一本看了好几天,我看还是只看了不到四分之一。这情形然我想起曾经某旁边放了一本项目管理的书的同事,过了几个星期我一看,还在那一页。
然后过几天天气热了,这位同事买了个小风扇。然后这两本书终于派上了真正的用途。666,一点毛病都没有。

至于让我做的“从现有代码找出不足”,我也是十分无语。那些代码不能说是“做得更好一些”,而是不能再烂了。

随便举一些很基础又让人无力吐槽的例子:

1、延迟new的单例不知道加sync
2、new 一个比如SimpleDateFormat之类的对象在for里new
3、new 很多根本没必要new的对象,比如 new BIgDecimal(0)
4、重复代码、重复调用都没注意过
5、提交日志每次都是“bug fixed”,也不动脑想一下既然都每次都是这个还不如不写就像java类默认继承了Object
6、一个长时间的操作需要给后台管理员展示进度,在线程池submit以后把一个int值加1作为进度
7、不知道subString(int)和subString(int,int)的区别
8、不知道String.split(String)内部是怎么实现的
9、不知道hash冲突这回事,用String的hashCode作为【不重复数值】,这真让人尴尬了。这说明也就是个会背背 哪些类实现了Map接口、==和equals的区别、StringBuilder与String的区别等问题的水平
10、但是会被StringBuilder与String有哪些区别并不代码会拼接字符串。连一个会拼字符串的都没有,甚至连一个知道【连接字面值的+编译后不存在】的都没有

11、不知道 银行家舍入算法,某次改版我用sql计算出的结果与原来的程序算出的不同,最后查出是BigDecimal舍入方式用了DOWN。之前我一直以为这是公司在给用户计算收益时故意把分以后的收益给砍掉,原来是不知道银行家舍入法,并且认为DONW是四舍五入。

之类的例子太多了,而这些问题真的是十分基础的东西。工欲善其事必先利其器人人都会背,但是能做到的没几个。我所见过的码农,普遍是把eclipse当记事本用、用着配的几十块钱包邮全国的键鼠、至于水平也普遍是上面提到的这些东西都不会的这种。

就这种水平的代码哪能叫“可以做得更好一些”,因为与好一点边都不沾何谈更好呢。
做事从来没思考过,跟机器一样只是在做而已。连这些基本东西都不去研究的人,或者认为自己已经很厉害了不屑于研究这些问题的人,真的不敢奢望他们能动脑思考什么。

你可能感兴趣的:(规范)