??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美精品一区二区三区蜜臀,亚洲日本在线视频观看,欧美制服丝袜第一页http://www.aygfsteel.com/foolpig83/category/41118.htmlzh-cnFri, 31 Jul 2009 10:06:01 GMTFri, 31 Jul 2009 10:06:01 GMT60Java开发者需坚守的十大基本准则(转)http://www.aygfsteel.com/foolpig83/archive/2009/07/31/289278.htmlqxqxFri, 31 Jul 2009 07:38:00 GMThttp://www.aygfsteel.com/foolpig83/archive/2009/07/31/289278.htmlhttp://www.aygfsteel.com/foolpig83/comments/289278.htmlhttp://www.aygfsteel.com/foolpig83/archive/2009/07/31/289278.html#Feedback0http://www.aygfsteel.com/foolpig83/comments/commentRss/289278.htmlhttp://www.aygfsteel.com/foolpig83/services/trackbacks/289278.html  一、ؓ代码加注释。虽然每个h都知道这点,但有时却不自觉忘了行,今天?#8220;忘了”加注释了吗?虽然注释对程序的功能没什?#8220;贡献”Q但q一D|_比如说两星期之后或者更长,回过头来看看自己的代码,说不定已l记不住它是q什么的了。如果这些代码是你个人的Q那q算是走q了Q不q的是,当然了,大多数时候都是别人的不幸Q很多时候大安是在为公司写代码Q写代码的h也许早已l离开了公司,但别忘了一句古话,有来有往嘛,Z人,也ؓ我们自己Q请Z的代码加上注释?/p>

  二、不要让事情复杂化。程序员有时候L对简单问题想出复杂的解决ҎQ比如说Q在只有五个用户的程序中引入EJB、对E序实现了ƈ不需要的框架QframeworkQ,之类的还有属性文件、面向对象解x案、多U程{等。ؓ什么要q样做呢Q也许我们ƈ不知道是否这样会更好Q但q样做也许可以学C些新东西Q或者让自己更感兴趣一些。如果是不知道ؓ什么这样做Q徏议多hl验丰富的程序员Q如果是Z个h的目的,ȝ让自己更专业一炏V?/p>

  三、始l牢记—?#8220;即是好QLess is moreQƈ不L对的”。代码效率虽然很重要Q但在许多解x案中Q编写更的代码q不能改善这些代码的效率Q请看下面这个简单的例子Q?/p>

if(newStatusCode.equals("SD") && (sellOffDate == null ||
todayDate.compareTo(sellOffDate)Q? || (lastUsedDate != null &&
todayDate.compareTo(lastUsedDate)Q?)) ||
(newStatusCode.equals("OBS") && (OBSDate == null ||
todayDate.compareTo(OBSDate)Q?))){
newStatusCode = "NYP"; 
}

  能看明白if条g语句是干什么的吗?能想出来是谁写的q段代码吗?如果把它分成两段独立的if语句Q是不是更容易理解呢Q下面是修改后的代码Q?/p>

if(newStatusCode.equals("SD") && (sellOffDate == null ||
todayDate.compareTo(sellOffDate)Q? || (lastUsedDate != null &&
todayDate.compareTo(lastUsedDate)Q?))){
newStatusCode = "NYP"; 
}else
if(newStatusCode.equals("OBS") && (OBSDate == null ||
todayDate.compareTo(OBSDate)<0))
{
newStatusCode = "NYP"; 
}

  是不是读hҎ多了呢,在此只是多加了一个if和两个花括号Q但代码的可L与可理解性就一下子提高了一大截?/p>

  四、请不要编码。开发者经常有?#8220;忘记”或忽略掉q点Q因为有些时候开发日E逼得实在太紧。其实,多写一行定义静态变量的代码能花多少旉呢?

public 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; 
}
}

 

  现在Q每ơ需要将“ABC”与其他变量进行比较时Q不必记住实际代码,直接引用A.S_CONSTANT_ABCp了,而且在今后需要进行修ҎQ也可在一处修改,不会遍整个源代码逐个修改了?/p>

  五、不?#8220;创?#8221;自己的框ӞframeworkQ。确切来_有数以千计的各种框架存在Q而且大多数是开源的Q这些框枉是优U的解x案,可用于日常程序开发中Q我们只需使用q些框架的最新版本就行了Q至表面上要跟上Ş势吧。被大家qؓ接受的最为明昄一个例子就是Struts了,q个开源web框架非常适合用在Zweb的应用程序中。是不是惛_发出自己的Struts呢,q是省点力气吧,回头看看W二条——不要让事情复杂化。另外,如果正在开发的E序只有3个窗口,׃要用Struts了,对这U程序来_不需要那么多?#8220;控制”?/p>

  六、不要用println及字W串q接。通常Z调试方便Q开发者喜Ƣ在可能的所有地斚w加上System.out.printlnQ也许还会提醒自己回q头来再来删除,但有些时候,l常会忘了删除或者不愿意删除它们。既然用System.out.println是ؓ了测试,那么试完之后,Z么还要留着它们呢,因ؓ在删除时Q很可能会删除掉真正有用的代码,所以不能低估System.out.println危害啊,L下面的代码:

public class BadCode {
public static void calculationWithPrint(){
double someValue = 0D; 
for (int i = 0; i Q?0000; i++) {
System.out.println(someValue = someValue + i); 
}
}
public static void calculationWithOutPrint(){
double someValue = 0D; 
for (int i = 0; i Q?10000; i++) {
someValue = someValue + i; 
}
}
public static void main(String [] n) {
BadCode.calculationWithPrint(); 
BadCode.calculationWithOutPrint(); 
}
}

  从测试中可以发现Q方法calculationWithOutPrint()执行用了0.001204U,作ؓҎQ方法calculationWithPrint()执行可是用了10.52U?/p>

  要避免浪费CPU旉Q最好的Ҏ是引入像如下的包装方法:

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 Q?10000; i++) {
someValue = someValue + i; 
myPrintMethod(logMode, someValue); 
}
}
public static void myPrintMethod(int logMode, double value) {
if (logMode Q?BadCode.DEBUG_MODE) { return; }
System.out.println(value); 
}
public static void main(String [] n) {
BadCode.calculationWithPrint(BadCode.PRODUCTION_MODE); 
}
}

 

  另外Q字W串q接也是费CPU旉的一个大_L下面的示例代码:

public static void concatenateStrings(String startingString) {
for (int i = 0; i Q?20; i++) {
startingString = startingString + startingString; 
}
}
public static void concatenateStringsUsingStringBuffer(String startingString) {
StringBuffer sb = new StringBuffer(); 
sb.append(startingString); 
for (int i = 0; i Q?20; i++) {
sb.append(sb.toString()); 
}
}

  在测试中可发玎ͼ使用StringBuffer的方法只用了0.01U执行完毕,而用连接的Ҏ则用?.08U,选择显而易见了?/p>

  七、多xGUIQ用L面)。再三强调,GUI对商业客h_与程序的功能及效率同{重要,GUI是一个成功程序的最基本部分Q而很多ITl理往往都没注意到GUI的重要性。在现实生活中,许多公司可能Z节省开支,没有雇用那些有着设计“用户友好”界面丰富l验的网设计者,此时Java开发者只能依赖他们自w的HTML基本功及在此领域有限的知识,l果Q很多开发出来的E序都是“计算机友?#8221;甚于“用户友好”。很有开发者同时精通Y件开发及GUI设计Q如果你在公?#8220;不幸”被分配负责程序界面,应该遵守下面三条原则:

  1?不要再发明一ơ轮子,即不做无用功。现有的E序可能会有cM的界面需求?br />   2?先创Z个原型。这是非帔R要一步,用户一般想看到他们用的东西Q而且可以先利用这个原型征求用L意见Q再慢慢修改成用h要的样子?br />   3?学会换位思考。换句话来说Q就是从用户的角度来审查E序的需求。D例来Ԍ一个汇ȝH口可以跨页或者不跨页Q作Z个Y件开发者,可能会們֐于不跨页Q因L单一些。但是,从用L角度来看Q可能不希望看到上百行数据都挤在同一上?/p>

  八、文档需求不放松。每个商业需求都必须记录在案Q这可能听上d童话Q似乎在现实生活中很隑֮现。而我们要做的是,不管开发时间多紧迫Q不最l期限多临近Q对每个商业需求都必须记录在案?/p>

   九、单元测试、单元测试、单元测试。关于什么是单元试的最好方法,在此不便l说Q只是强调,单元试一定要完成Q这也是~程中最基本的原则。当然了Q如果有人帮你做单元试自然是最好,如果没有Q就自己来做吧,当创Z个单元测试计划时Q请遵守以下三条最基本的原则:

  1?先于~写cM码之前编写单元测试?br />   2?记录单元试中的代码注释?br />   3?试所有执行关键功能的公有ҎQ这里不是指set和getҎQ除非它们是以自qҎ式执行set和getҎ?/p>

  十、质量,而不是数量。有些时候因Z品问题、期限紧q、或一些预料之外的事情Q导致常怸能按时下班,但一般而言Q公怸会因为雇员经常加班而对之表扬和奖励Q公司只看重高质量的工作。如果遵守了前九条原则,你会发现自己写出的代码bug且可维护性高Q无形中质量提高了一大步?/p>

qx 2009-07-31 15:38 发表评论
]]>
վ֩ģ壺 | | | | | Ȫ| | ޻| ɽ| ̫| ˮ| | Ӣɳ| Ƹ| ɾ| | | ƫ| ̳| ɽ| «Ϫ| ǰ| ͬ| | ͤ| բ| | ɽ| | | | | ij| з| | | | ҵ| | | |