Java 开发规约发布后,我们举办了一场“我有礼品你有故事吗 —— Java 开发规约勾起了你什么样的回忆?”的讨论,很多同学说出了自己的悲催经历,我们从中评出了“最悲催同学奖”和“最佳评论奖”,先来看看获得“最悲催同学奖”的他们都经历了什么:
@substring:
1.这坑就太多了,旁边一个哥们提交的代码给你们瞅瞅
List<Map<String, Object>> mapList = new ArrayList<Map<String, Object>>();
List<Map<String, Object>> mapList1 = new ArrayList<Map<String, Object>>();
Integer hiddConred;
Integer hiddConh;
Integer hiddConl;
Integer c = 0;
List<Dept> deptList = deptService.queryDeptByPid(1);
/* 获取情报分类列表 */
List<AstDictionaries> listf = astDictionariesService.reclassification();
for (AstDictionaries astDictionaries : listf) {
Map<String, Object> map = new HashMap<String, Object>();
c = c + 1;
Integer sd = polIntelligenceService.huodefenlei(astDictionaries.getId());
map.put("a" + c, sd);
mapList1.add(map);
}
2.记得第二年工作的时候经理给过一份类似阿里这样的代码规范,从此之后代码就美观多了
@Liuzh_533
前段时间发现新增菜单后显示不出来。。
看代码后发现同事在比较 parentId == id 的时候用的等号,一旦 id 超过128就开始悲剧了。
@notreami
boolean a=true;
boolean b=false;
while(a=b){
....
}
比较偏,就这bug,当年排查了好久。
@zb1482373596384
不清楚java的内存结构...
Integer i1=1;
Integer i2=1;
Integer i3=127;
Integer i4=127;
Integer i5=128;
Integer i6=128;
Integer i7=-128;
Integer i8=-128;
i1==i2 返回true
i3==i4 返回true
i5==i6 返回true
i7==i8 返回true
最后发现 Integer直接赋值在-128—127不会新创建一个对象,超过才会去创建对象
@魰hui
看懂自己写的代码,特别是测试的代码(初学的时候),简直
int djsjd=8464;
int asd=54;
你见过吗?如此规范的代码,我估计没人看得懂除了当时的我
@最初幻想
之前公司用PMD、CheckStyle做静态代码检查,针对魔法数字一刀切,连正常的循环索引下标等数字都需要定义常量,有点画蛇添足之嫌,不过本人对具有业务含义的魔法数字和魔法字符倒是深恶痛绝!
@夜辰
一同事SQL根本没写对,还直接提交代码了。功能也没自己跑通,就找别人调试。SQL语句都没有输出,一开始还误导别人是程序逻辑错了,最后找了半天,是SQL语句写错了。
@小爷胡汉三
有的同志受不了代码后面多出来的空格,有时候纯粹是为啦重新编译而敲上的空格。我开发很久了,一直没发现这有什么毛病,直到后来,一个同事在改我的代码,几次代码整合都冲突了,我发现他一直在删代码后面的空格,一直删...我忍不住问了句,他说他受不了这种代码,还专门开启啦空格符跟换行符...我也是醉啦!!!
@gongweixin
log.error("aa{}bb{}", message, exception)
异常栈没有打出来,只打了个异常的名字在日志里
@滔哥
做为一名PHPer,维护着一个java后台并做二次开发。你告诉哪没有坑.....我第一天配置本地项目用eclipse和idea尽然折腾了一天没跑起来。。。第二天又折腾了半天才算将现有项目在本地demo了...
获得“最佳评论奖”的他们又有什么想说的:
@empireghost
日期格式化线程不安全,SimpleDateFormat是最常见的坑
@Nehway:
java编程从业也有几年了,回想多年前刚开始接触java的时候真是感慨良多呀!
1.了解了定义变量,如String a="i love you",自学了集合类的时候Set<?> x=HashSet<>(),编译错误居然没有发现忘记了"new";
2.非常喜欢用Integer i=128,来刁难别人。
3.心烦的时候思考逻辑真的是一团糟呀一团糟
@debugable
发现别人代码里面的逻辑
if(xxxx){
}else{
xxxxx
}
@Cobbage
"37".equals(abc) abc是个int类型的
最近遇到的 abc是个int类型的 随手就这样写了
@守望者翱翔
取对象从来不判空,运行的时候时不时来一个空指针。方法从来不写注释,用拼音哈哈哈。
@abcijkxyz:
-Dfile.encoding=UTF-8 URIEncoding="UTF-8" charset=utf-8 pageEncoding="utf-8" 不想多说什么
@empireghost
if (sq.getDistributorId().equals(distributorId)) {
......
}
Long 类型与String类型 equals永远返回false
@创业是喝可乐
我都直接汉语拼音命名类的,咋滴
@聪聪小可爱
还是觉得复制粘贴靠谱一点,有些时候有强迫症,觉得这个单词很熟,结果换来的是很久的拍错
@lolcat
函数名:thisIsAMethodToRequestBackendData
以上获奖者将获得由阿里巴巴送出阿里鸡年公仔一个,请及时将联系方式及喜欢的鸡年公仔留言@两味真火。
留言格式
姓名:xxx
地址:xxxx省xxxx市xxxx路xxxx xxxx
手机:xxxxxxxxxxx
公仔款式:xxxxxx(可从以下 5 款公仔中任意挑选一款):
从这二十位“最悲催同学”的经历看来,Java 开发规约确实给开发者带来的便利,当然开发者们也可以继续讨论其存在的必要性。
本文来自开源中国社区 [http://www.oschina.net]