5、不要发明自己的框架结构
有数以千计的框架结构而其大多数都是开放源。许多框架结构是被用在数以千计的应用程序中的优秀的解决方案。至少在表面我们需要用上新的框架结构。其中最好的也是广发应用的框架结构的例子就是Struts.这个开放源web结果框架是一个非常好的候选者来用于web-based 应用程序。请不要用自己版本的Strut,你将会在尝试中死去。但是你必须记住规则2—别把事情复杂化。如果你的应用程序要开发3个screen-请不要用Struts,目前还没有像这样的应用程序的“控制”需求。
6、要对打印线和字符串串联说“不”
我知道在以调试为目,开发者喜欢到处在我们觉得适合的地方添加System.out.println.又自言自语的说一会儿我们会删除这些的。但是我们总是忘记删除这些代码行或者不想去删除它们。我们用System.out.println来进行测试,为什么我们在测试完成后才触及这些代码呢?我们可能会删除一行代码当我们确实要这么做的时候!只要你不要低估System.out.println 的破坏,看以下的代码:
publicclassBadCode {
publicstaticvoidcalculationWithPrint(){
doublesomeValue = 0D;
for(inti =0; i <10000; i++) {
System.out.println(someValue = someValue + i);
}}
publicstaticvoidcalculationWithOutPrint(){
doublesomeValue = 0D;
for(inti =0; i <10000; i++) {
someValue = someValue + i;}}
publicstaticvoidmain(String [] n) {
BadCode.calculationWithPrint();
BadCode.calculationWithOutPrint();
}}
在上面所显示的,你能观察到calculationWithOutPrint()用了0.001204秒运行。相比之下,用了惊人的10.52秒去运行calculationWithPrint() method.
(如果你想要知道如何制作这个的表格,请阅读我的文章题目是"Java Profiling with WSAD" Java Profiling with WSAD)
最好的像避免CPU浪费的方法是去引用像这样的包装方法:
publicclassBadCode {
publicstaticfinalintDEBUG_MODE =1;
publicstaticfinalintPRODUCTION_MODE =2;
publicstaticvoidcalculationWithPrint(intlogMode){
doublesomeValue = 0D;
for(inti =0; i <10000; i++) {
someValue = someValue + i;
myPrintMethod(logMode, someValue);
}
}
publicstaticvoidmyPrintMethod(intlogMode,doublevalue) {
if(logMode > BadCode.DEBUG_MODE) {return; }
System.out.println(value);
}
publicstaticvoidmain(String [] n) {
BadCode.calculationWithPrint(BadCode.PRODUCTION_MODE);
}
}
String concatenation is another CPU waster. Consider example below:
publicstaticvoidconcatenateStrings(String startingString) {
for(inti =0; i <20; i++) {
startingString = startingString + startingString;
}
}
publicstaticvoidconcatenateStringsUsingStringBuffer(
String startingString) {
StringBuffer sb =newStringBuffer();
sb.append(startingString);
for(inti =0; i <20; i++) {
sb.append(sb.toString());}}
32/3<123>