JAVA网站制作之Java开辟者需据守的十年夜基础原则仓酷云
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本书足以,这就是区别。 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 是一种突破用户端机器环境和CPU 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 是一种将安全性(Security)列为第一优先考虑的语言 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。 是一种将安全性(Security)列为第一优先考虑的语言 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
页:
[1]