|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Java的B/s开发是通常是javaweb开发,又叫J2EE开发,J2SE是手机开发。C#的C/s和B/s开发是说.net和Asp开发。。u在这里说明一点;资深一点的Java和C#程序员都明白一点先容
作为一个已事情了良多年的软件开辟者和征询师,我看过大批五花八门的程序言语代码。个中有粗俗的也有丑恶的,可是不幸的是,它们中年夜多半代码都是丑恶的。我但愿可以压服你们,我的开辟同伴们,我们应当充足的器重我们的代码作风,特别是那些在使用程序中供应用户接口和其他可视化部分的代码。在这两部分系列的第一部分,我会注释为何我们应当体贴我们的代码表面,然后论述一些好的JAVA作风的一样平常要素。为何代码很主要
只管JAVA是用来写程序而不是散文,但它仍旧被用来表达头脑和概念的。并且,在查询拜访中显现,那些头脑和概念在实践中完成了良多事变。为编写出好的JAVA作风而担心,仿佛是在华侈工夫,但实践上它对我们编写程序是很合适的,由于它所要表达的头脑和概念是分外明晰的。
这里供应一些来由,为何要利用好的JAVA代码标准
一个软件产物的80%的性命期是在保护(maintenance)。
几近没有一个软件在它的全部性命期里都是被它的作者来保护的。
利用好的作风进步了软件的可保护性。
假如源代码和软件产物是绑缚给客户的,作为产物的残剩部分,它应当有好的分包(well-packaged),充足明晰和专业的代码。
利用好的作风编写代码有以下几点优点:
进步了代码的可读性,延续性,协调性。这些都能使代码能更简单的了解和保护。
使代码更简单被跟踪和调试,由于它是明晰的和延续的。
使你或另外一个程序员在编写停止时更简单再持续下往,特别在一个很长的工夫后。
增添了代码预排(walkthroughs)的优点,由于能让参进者更多的将核心会合在代码正在做甚么。
提要目标
利用好的JAVA作风其实不坚苦,可是它的确必要注重细节。上面是一些经常使用的提要引导目标:
使代码更明晰和更简单读
使代码更延续
利用不言而喻的标识符名
逻辑地构造你的文件和类
每一个文件只要一个类(这里不包含一些外部类)
利用80-90个字符的最年夜行宽
明智的利用空格来and/or其他分开符
缩排上,利用空格(Space)来取代Tab
Tabsvs.空格
在编写代码时,“Tabsvs.空格”是一个松散的概念。这里我并非表示只要一个准确的办法。我撑持利用空格,由于它能包管我的代码在你的编纂器里和我的编纂器里看到的不异,反之矣然。假如你感到利用空格来取代Tab"不是准确的",那末就利用Tab吧。
括号和缩进
在编写代码时,缩进作风(cf.,Raymond,"IndentStyle"),大概安排括号("{"和"}")和一些相干联的缩进代码,是另外一个松散的概念。象JAVA一样,有很多C作风的言语存在。我这里也不是表示它们中哪个更优先更好。在年夜多半本文的典范代码中,我利用了K&R作风,假如你不喜好K&R作风,那末就利用其他作风吧。
正文
在JAVA代码中你可使用两种正文:Javadoc正文(也称为文档正文)和实行正文。Javadoc正文可以被javadoc工具解压来打造一个API文档。实行正文是那些注释代码目标和体例的正文。在正文你的JAVA代码时请利用以下目标:
尽量的利用Javadoc正文(在类和办法上,使之能最小化).
多利用块正文,少利用//正文,除非一些特别的情形,如变量声明
要记着:好正文是有匡助的,坏正文是贫苦的。
Example1.BadCommentStyle
//applyRotAscii()--ApplyASCIIROT
privatevoidapplyRotAscii(){
try{
introtLength=Integer.parseInt(rotationLengthField.getText().trim());//getrotlen
RotAsciicipher=newRotAscii(rotLength);//newcipher
textArea.setText(cipher.transform(textArea.getText()));//transform
}catch(Exceptionex){
/*Showexception*/
ExceptionDialog.show(this,"Invalidrotationlength:",ex);}
}
Example2.GoodCommentStyle
/**
*ApplytheASCIIrotationciphertotheuserstext.Thelengthisretrieved
*fromtherotationlengthfield,andtheuserstextisretrievedfromthe
*textarea.
*
*@authorThorntonRose
*/
privatevoidapplyRotAscii(){
introtLength=0;//rotationlength
RotAsciicipher=null;//ASCIIrotationcipher
try{
//Getrotationlengthfieldandconverttointeger.
rotLength=Integer.parseInt(rotationLengthField.getText().trim());
//CreateASCIIrotationcipherandtransformtheuserstextwithit.
cipher=newRotAscii(rotLength);
textArea.setText(cipher.transform(textArea.getText()));
}catch(Exceptionex){
//Reporttheexceptiontotheuser.
ExceptionDialog.show(this,"Invalidrotationlength:",ex);
}
}
块和语句
利用上面的目标来编写块和语句:
一行只写一个语句
把持语句老是利用{}如许的括号(e.g.,if).
思索在块的开端利用一个正文(e.g.,}//endif),特别是长的或嵌套块
在块的开首安排变量的声明语句
总记得初始化变量
假如你是个完善主义者,左对齐变量名
在switch块里缩进case从句
在操纵符后留有空缺
在if,for,或while语句中,在括号“(”前留有空缺
在表达式中利用空缺和拔出语来加强可读性
在for轮回中的变量是个破例。轮回变量大概会在语句初始化部分被界说。e.g.,for(inti=0;...).
在块的开端拔出正文有助于你偶然中跟踪到被删除的开头括号“}”.
Example3.BadBlockStyle.
try{
for(inti=0;i<5;i++){
...
}
intthreshold=calculateThreshold();
floatvariance=(threshold*2.8)-1;
intc=0;
if(threshold<=15)c=calculateCoefficient();
switch(c){
case1:setCeiling(c*2);break;
case2:setCeiling(c*3);break;
else:freakOut();
}
}catch(Exceptionex){...}
Example4.GoodBlockStyle.
try{
intthreshold=0;
floatvariance=0.0;
intcoefficient=0;
//Prepare5cycles.
for(inti=0;i<5;i++){
prepareCycle(i);
}
//Calculatethethresholdandvariance.
threshold=calculateThreshold();
variance=(threshold*2.8)-1;
//Ifthethresholdislessthanthemaximum,calculatethecoefficient.
//Otherwise,throwanexception.
if(threshold<=MAX_THRESHOLD){
coefficient=calculateCoefficient();
}else{
thrownewRuntimeException("Thresholdexceeded!");
}
//Settheceilingbasedonthecoefficient.
switch(coefficient){
case1:
setCeiling(coefficient*2);
break;
case2:
setCeiling(coefficient*3);
break;
else:
freakOut();
}//endswitch
}catch(Exceptionex){
...
}//endtry
令人可喜的是java现在已经开源了,所以我想我上述的想法也许有一天会实现,因为java一直都是不断创新的语言,每次创新都会给我们惊喜,这也是我喜欢java的一个原因。 |
|