|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
C#是不行的,比如说美国的航天飞船里就有java开发的程序以上是我的愚见,其实不管那种语言,你学好了,都能找到好的工作, 有很多尺度和理论原则可合用于Java开辟者,但此处要说的,是每一个Java开辟者需据守的基础准绳。
1、为代码加正文。固然每一个人都晓得这点,但偶然却不盲目忘了实行,明天你“忘了”加正文了吗?固然正文对程序的功效没甚么“奉献”,但过一段工夫,好比说两礼拜以后大概更长,回过火来看看本人的代码,说不定已记不住它是干甚么的了。假如这些代码是你团体的,那还算是交运了,不幸的是,固然了,年夜多半时分都是他人的不幸,良多时分人人都是在为公司写代码,写代码的人大概早已分开了公司,但别忘了一句古话,有来有往嘛,为别人,也为我们本人,请为你的代码加上正文。
2、不要让事变庞大化。程序员偶然候老是对复杂成绩想出庞大的办理计划,好比说,在只要五个用户的程序中引进EJB、对程序完成了其实不必要的框架(framework),之类的另有属性文件、面向对象办理计划、多线程等等。为何要如许做呢?大概我们其实不晓得是不是如许会更好,但如许做大概能够学到一些新工具,大概让本人更感乐趣一些。假如是不晓得为何如许做,倡议多就教履历丰厚的程序员,假如是为了团体的目标,贫苦让本人更专业一点。
3、一直切记——“少便是好(Lessismore)其实不老是对的”。代码效力固然很主要,但在很多办理计划中,编写更少的代码其实不能改良这些代码的效力,请看上面这个复杂的例子:
if(newStatusCode.equals("SD")&&(sellOffDate==null||
todayDate.compareTo(sellOffDate)<0||(lastUsedDate!=null&&
todayDate.compareTo(lastUsedDate)>0))||
(newStatusCode.equals("OBS")&&(OBSDate==null||
todayDate.compareTo(OBSDate)<0))){
newStatusCode="NYP";
}
能看分明if前提语句是干甚么的吗?能想出来是谁写的这段代码吗?假如把它分红两段自力的if语句,
是否是更简单了解呢,上面是修正后的代码:
if(newStatusCode.equals("SD")&&(sellOffDate==null||
todayDate.compareTo(sellOffDate)<0||(lastUsedDate!=null&&
todayDate.compareTo(lastUsedDate)>0))){
newStatusCode="NYP";
}else
if(newStatusCode.equals("OBS")&&(OBSDate==null||
todayDate.compareTo(OBSDate)<0))
{
newStatusCode="NYP";
}
是否是读起来简单多了呢,在此只是多加了一个if和两个花括号,但代码的可读性与可了解性就一会儿进步了一年夜截。
4、请不要硬编码。开辟者常常成心“健忘”或疏忽失落这点,由于有些时分开辟日程逼得其实太紧。实在,多写一行界说静态变量的代码能花几工夫呢?
publicclassA{
publicstaticfinalStringS_CONSTANT_ABC="ABC";
publicbooleanmethodA(StringsParam1){
if(A.S_CONSTANT_ABC.equalsIgnoreCase(sParam1)){
returntrue;
}
returnfalse;
}
}
如今,每次必要将“ABC”与其他变量举行对照时,不用记着实践代码,间接援用A.S_CONSTANT_ABC就好了,并且在从此必要举行修正时,也可在一处修正,不会翻遍全部源代码逐一修正了。
5、不要“制造”本人的框架(framework)。切实来讲,无数以千计的各类框架存在,并且年夜多半是开源的,这些框架都是优异的办理计划,可用于一样平常程序开辟中,我们只需利用这些框架的最新版本就好了,最少外表上要跟上情势吧。被人人广为承受的最为分明的一个例子就是Struts了,这个开源web框架十分合适用在基于web的使用程序中。是否是想开辟出本人的Struts呢,仍是省点力量吧,转头看看第二条——不要让事变庞大化。别的,假如正在开辟的程序只要3个窗口,就不要利用Struts了,对这类程序来讲,不必要那末多的“把持”。
6、不要利用println及字符串联接。一般为了调试便利,开辟者喜好在大概的一切中央都加上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秒,作为对照,办法calculationWithPrint()实行但是用了10.52秒。要制止华侈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);
}
}
别的,字符串联接也是华侈CPU工夫的一个年夜头,请看上面的示例代码:
publicstaticvoidconcatenateStrings(StringstartingString){
for(inti=0;i<20;i++){
startingString=startingString+startingString;
}
}
publicstaticvoidconcatenateStringsUsingStringBuffer(StringstartingString){
StringBuffersb=newStringBuffer();
sb.append(startingString);
for(inti=0;i<20;i++){
sb.append(sb.toString());
}
}
在测试中可发明,利用StringBuffer的办法只用了0.01秒实行终了,而利用毗连的办法则用了0.08秒,选择不言而喻了。
7、多存眷GUI(用户界面)。再三夸大,GUI对贸易客户来讲,与程序的功效及效力一律主要,GUI是一个乐成程序的最基础部分,而良多IT司理常常都没注重到GUI的主要性。在实际生存中,很多公司大概为了节俭开支,没有招聘那些有着计划“用户友爱”界面丰厚履历的网页计划者,此时Java开辟者只能依附他们本身的HTML基础功及在此范畴无限的常识,了局,良多开辟出来的程序都是“盘算机友爱”甚于“用户友爱”。很少有开辟者同时精晓软件开辟及GUI计划,假如你在公司“不幸”被分派卖力程序界面,就应当恪守上面三条准绳:
1、不要再创造一次轮子,即不做无勤奋。现有的程序大概会有相似的界面需求。
2、先创立一个原型。这长短常主要一步,用户一样平常想看到他们将利用的工具,并且能够先使用这个原型收罗用户的定见,再渐渐修正成用户想要的模样。
3、学会换位思索。换句话来讲,就是从用户的角度来检察程序的需求。举例来说,一个汇总的窗口能够跨页大概不跨页,作为一个软件开辟者,大概会偏向于不跨页,由于如许复杂一些。可是,从用户的角度来看,大概不但愿看到上百行数据都挤在统一页上。
8、文档需求不抓紧。每一个贸易需求都必需纪录在案,这大概听上往像童话,仿佛在实际生存中很难完成。而我们要做的是,不论开辟工夫多紧急,不论终极刻日多邻近,对每一个贸易需求都必需纪录在案。
9、单位测试、单位测试、单位测试。关于甚么是单位测试的最好办法,在此方便细说,只是夸大,单位测试必定要完成,这也是编程中最基础的准绳。固然了,假如有人帮你做单位测试天然是最好,假如没有,就本人来做吧,当创立一个单位测试企图时,请恪守以下三条最基础的准绳:
1、先于编写类代码之前编写单位测试。
2、纪录单位测试中的代码正文。
3、测试一切实行关头功效的私有办法,这里不是指set和get办法,除非它们是以本人共同体例实行set和get办法。
10、质量,而不是数目。有些时分由于产物成绩、刻日紧急、或一些意料以外的事变,招致经常不克不及定时上班,但一样平常而言,公司不会由于雇员常常加班而对之表彰和嘉奖,公司只垂青高质量的事情。假如恪守了前九条准绳,你会发明本人写出的代码bug少且可保护性高,有形中质量进步了一年夜步。
对于一个大型项目,如果用java来作,可能需要9个月,并且可能需要翻阅10本以上的书,但如果用ruby来作,3个月,3本书就足够了,而.net网页编程也不过3,4本书足以,这就是区别。 |
|