Google Earth发现中国“晋”级核潜艇!
第四条:不要埋头coding,注意技巧。
开发者通常会忘记或者故意忽略这一条,因为我们通常时间很宝贵,抓紧时间,勤勤恳恳编写代码。但是,如果你遵守这条戒律的话,或许能从这种忙绿的情况下解脱出来。用一行定义一个静态常量能需要你多长时间?
举个例子:
现在你每次需要和一些变量比较"ABC"的时候,你可以引用A.S_CONSTANTpublic class A ...{
![]()
public static final String S_CONSTANT_ABC = "ABC";
![]()
public boolean methodA(String sParam1)...{
![]()
if (A.S_CONSTANT_ABC.equalsIgnoreCase(sParam1))...{
return true;
}
return false;
}
}
_ABC,而不是记住实际的代码。同时,它还是很容易修改这个常量,而不用在你的整个代码中一一修改。
第五条:不要发明自己的框架。
已经有上千种的框架,并且大部分都是开源的。这些框架已经是非常好的解决方案了,并且应经应用于上千种的应用程序。我们需要紧跟学习这些新的框架,至少不会犯大的错误。Struts就是一个使用广泛并且非常好的例子之一。对于基于web的应用程序来说,这个开源的框架是非常完美的。请不要拿出自己的Struts版,你的版本会很快消亡的。你应该牢记第二条:不要将事情复杂化。如果你的程序只有三个用户的话,请不要使用Struts,这种应用程序是不需要Struts的。
第六条:慎用Print语句和字符串。
我知道为了调试的需要,许多程序员喜欢添加到处添System.out.println语句。事先我们会告诉自己我们过一会把它删除掉。但是,我们常常忘了删除这些代码,或者我们不想删除这些代码。我们使用System.out.println去测试,这是好事,为什么我们还要去批评这件事情?因为我们有可能误删除我们真正需要的System.out.println语句。或许你是低估了System.out.println语句的危害性,看看下面的代码:
如下图所示,你会发现calculationWithOutPrint()方法运行花了0.001204秒,而calculationWithPrint()竟然用了10.52秒public class BadCode ...{
public static void calculationWithPrint()...{
double someValue = 0D;
for (int i = 0; i < 10000; i++) ...{
System.out.println(someValue = someValue + i);
}
}
public static void calculationWithOutPrint()...{
![]()
double someValue = 0D;
for (int i = 0; i < 10000; i++) ...{
someValue = someValue + i;
}
![]()
}
public static void main(String [] n) ...{
BadCode.calculationWithPrint();
BadCode.calculationWithOutPrint();
}
}
避免浪费CPU时间的最后方法是引入一个测试方法,如下所示:
字符串是浪费cpu资源的另一原因。看看下面的例子:public class BadCode ...{
![]()
public static final int DEBUG_MODE = 1;
public static final int PRODUCTION_MODE = 2;
![]()
public static void calculationWithPrint(int logMode)...{
double someValue = 0D;
for (int i = 0; i < 10000; i++) ...{
someValue = someValue + i;
myPrintMethod(logMode, someValue);
}
}
![]()
public static void myPrintMethod(int logMode, double value) ...{
if (logMode > BadCode.DEBUG_MODE) ...{ return; }
System.out.println(value);
}
public static void main(String [] n) ...{
BadCode.calculationWithPrint(BadCode.PRODUCTION_MODE);
}
}
public static void concatenateStrings(String startingString) ...{
for (int i = 0; i < 20; i++) ...{
startingString = startingString + startingString;
}
}
![]()
public static void concatenateStringsUsingStringBuffer(
String startingString) ...{
StringBuffer sb = new StringBuffer();
sb.append(startingString);
for (int i = 0; i < 20; i++) ...{
sb.append(sb.toString());
}
}
0
相关文章
