`
lg_asus
  • 浏览: 185067 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

java开发小技巧

 
阅读更多
前面几篇blog记录的都是java中一些很基础的知识,但不经常遇到,对于我这个有2年多开发经验的码农来说,还是不知其原理。因此这里单独开篇blog来记录开发中遇到的一些很基础很有用的skills。 注:很多思想都是来自群中的讨论,在此感谢tank大牛,教会了我好多东西,thx very much. (这篇blog原本是把群的号给公布出来,我只是想让更多java lover加入群中,没想到web  master把blog移入到了回收站,my god,以为我是打广告的么。不过,还是很欣赏管理员的铁面无私,加油,iteye)

skill 1: 不要在for循环中访问链表,而是用遍历器。原因:链表访问是从head一直往下遍历的,在for中访问链表,那么每次都要从head往下找,非常低效。

skill 2:尽量少在代码中出现magic number, magic string, 而是应该将这些信息配置在文件中,虽然解析配置文件比较麻烦,但你要想着代码以后是否移植,是否更加容易配置。如果你的代码只在一个项目中用到,那么这条pass

skill 3:对于那些根据数据不同显示结果不同的情况,如果学生成绩分阶梯,60分以下为D,60~70为C等等(见code complete),那么可以采用数据驱动开发(也叫表驱动开发 Table Driven Development, TDD),将数据写在文件中去解析。而不是将这部分逻辑写在代码中,用多个if或多个类。相比之下,TDD扩展更方便,代码更易维护。

skill 4:sql的执行顺序
1 FROM 获取表/视图/结果集...
2 WHERE 过滤各表/视图/结果集...内的行,然后JOIN
3 GROUP BY 分组
4 HAVING 过滤组
5 SELECT 行组都过滤好的结果集中取数据
6 ORDER BY 对要返回的结果排序
同时在oracle中,语法分析和where条件执行都是从右向左。

skill 5:
public class TestFinal
{
private static int leftOperand = 1;
private static TestFinal instance = new TestFinal();
private static int rightOperand = 1;
private int value = 0;

public TestFinal(){
this.value = this.leftOperand + this.rightOperand;
}

public int getValue(){
return this.value;
}

@Test
public void test(){
System.out.println(instance.getValue());
}
}

上面的输出结果是1,并不是2,原因是在实例化instance的时候,rightOperand还是0。 如果想让leftOperand和rightOperand在instace实例化前就先赋值,可以把rightOperand声明为fianl。 variable = value,这一步其实是分两步来执行的:1 声明变量variable并赋予默认值,2 将value赋值给variable.

skill 6:
如何在eclipse breakpoint中设置条件,参考 http://wiki.eclipse.org/FAQ_How_do_I_set_a_conditional_breakpoint%3F
不过,群里一位大牛说他可以直接用className.equals("XXX"),可能是rt.jar在javac的时候-g参数的不同造成的差异。如果不能直接用className,那就用argN占位符。这也就是为什么有时在调试的时候为什么不能watch/inspect相应的参数值,因此可以watch arg0, arg1...这样的方式查看参数值。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics