我是一名普通不过的程序员,开发过程中不经意间常会发生一些错误,有些错误犯得常了,就记录了。
一、使用迭代器遍历集合时,容易误用if代替while去循环
使用迭代器遍历集合时,容易误用if代替while去循环:
1 if (iterator.hasNext()) { 2 height = iterator.next(); 3 session.save(height); 4 }
应该为:
1 while (iterator.hasNext()) { 2 height = iterator.next(); 3 session.save(height); 4 }
二、JS中避免在循环中重复声明变量
虽然在JAVA中不建议在循环中重复声明变量(尽量放在循环外),但不少时候我们会因为粗心没注意,这样做效率/空间虽然有所缺失,结果始终还是正确的。
而在JS中,重复定义的变量,变量值不会因重新定义而重新初始化为NULL,而只声明不初始化使用该变量也无警告提示,这导致稍不留神就会导致错误(因为该变量仍保留着上次循环的值)
调试代码:
1 <script type="text/javascript"> 2 function testFn() { 3 var tempArray = ['a', 'b', 'c']; 4 5 for (var i = 0; i < tempArray.length; i++) { 6 var temp; 7 alert(i + '.temp -> ' + temp); 8 temp = tempArray[i]; 9 } 10 } 11 </script> 12 13 <body οnlοad="testFn();" > 14 This is my HTML page. <br> 15 </body>
三、页面必录字段一般需校验去空格后是否为空
页面存在非空的文本框,在做校验时除了判断该文本框的值是否为空时,一般还需要“去两边空格”后再判断是否为空。
而JAVA中的String类有trim方法,JS中并无此方法,有需要的可自己写一个,或使用Ext或JQuery中的,Ext或JQuery使用正则表达式 + replace实现“去两边空格”
四、生成HBM文件应去掉schema声明
使用IDE生成POJO或HBM映射文件时,注意把对应的schema="数据库"去掉,不然应用程序切换数据库(切换sit/uat时报错)就会报错
五、JS中的delete为关键字,不可使用其作方法名
我偏爱使用简短的单字作为方法名,有两次就使用delete作为方法名,程序总是错误,后来一步步地调试才发现不能使用delete作为方法名。delete为JS的关键字。
1 function delete() { 2 }
六、从Ctrl中setAttribute传值到页面,页面接收值时应判空
在Action中使用request.setAttribute传值到页面(此值可能为空),页面接收时应适当判空,不然有可能会出现无值而语法报错的情况。
页面判空:
1 var queryConditions = <%= 2 request.getParameter("queryConditions") == null || request.getParameter("queryConditions").length() == 0 ? "null" : request.getParameter("queryConditions" %>;
如果不判空,而实际传值为空时,在浏览器上查看的代码:
1 var queryConditions = ;