不知觉中入职一个月有余了,虽然一直坚持认为编程是件简单养身的事情,但是初来乍到,还是趟了充满智慧的前辈们留下的坑,开个玩笑,言归正传,有余不熟悉相关业务,自己还是犯了一些错误,记录一下防止以后踩坑。
1.混淆表
做某项业务开发的时候,遇到两张内容接近相同的表,一张是记录系统内部真是数据,一张用于记录对外显示,业务相关所以才这么设计,很遗憾,这里我用错了表。
2.错误估计表容量
修改某个查询接口,发现该接口有个错误,错误原因是在数据库(某张基础数据表)记录中找合适数据,但原代码直接取默认第一条,神奇的是这样居然很多情况下是对的,于是我决定修改这个接口,修改方法是取出所有数据库记录,做循环匹配合适结果,然后做了单元测试没问题就上线了,还庆幸自己解决了一个遗留bug,妥妥的,妥妥的生产事故。事故原因,该接口在部分查询条件下,结果集在30万左右,循环匹配?too young!反思自测不充分。另外,谁告诉我这是张基础数据表?
3.form表单嵌套问题
在HTML页面里多个form表单嵌套会导致内部的form元素统统失效,坑爹的是可以拿到该元素,但是val() 一直为null。讲真这是个恶心的bug,查了我4个小时以上,轻描淡写过了吧。
4.HTML标签失效方法
让<a>标签失效的方法添加属性"pointer-events:false",让按钮失效的方法,添加属性"disabled:true",两者不可混淆。
5.String的equals方法
最近审代码的时候两段代码触及到了我的知识盲点,代码段1自行查看String的equals方法源码,如果比较对象不是String类型返回false,代码段2确实让我很意外,我以为三目运算符会先编译问号后边条件的,编译时就会报错,结果正常运行,但是还是不建议这样写,我应该是在其他语言中踩过类似的坑。
// 代码段1
String o1 = "1";
Integer o2 = 1;
System.out.println(o1.equals(o2));
System.out.println(o1.equals(o2 + ""));
// sout
false
true
// 代码段2
Object o3 = null;
System.out.println(o3 == null ? "here" : o3.toString());
// sout
here
6.拖延症
公司的会议繁多且冗长,不知道什么时候就被叫去开会,事先不预留好工作的时间,很可能就变成加班时流下的悔恨的泪水,切记!切记!再补充点,今天和公司敏捷教练谈话,得知一般公司程序员有效发开时间能做到总工时65%就算不错了,其中百分之35%留给会议,邮件,学习等等,具体来算两周一次的迭代,第一周周一澄清需求,第二周周三开始测试,开发时间为6天,每天8小时算,8*6*0.6(按我自己的时间利用率) ≈ 30h,30个小时能做多少需求,大家心里都有些B-tree,不够的只能加班来凑,所以不想加班,提高效率!!