|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你说是sun公司对她研究的透还是微软?针对自己工具开发的.net性能上肯定会站上风的。本文先容的JAVA划定规矩的申明分为3个次要级别,本篇丢弃了平常开辟中很少碰到的情形,那些用得对照少的今后再初级篇内里呈现。并有六个有效的国际软件开辟主要注重的有关String的成绩,恪守了这些划定规矩能够进步程序的效力、使代码又更好的可读性等。
(1)假如有JDBC毗连没有关失落的话,必要在"finally"办法中关失落
假如数据库毗连失利大概是没有开释毗连,看上往可有可无。可是其他的用户就必要用更长的工夫守候毗连,如许数据库使用效力就会下落。确保你的代码在任何情形下,包含堕落大概程序非常停止的情形下都开释数据库毗连。在"finally"办法中关失落毗连,就能够确保这一点。
毛病示例:
try{
Statementstmt=con.createStatement();
}catch(SQLExceptione){
e.printStackTrace();
}
准确示例:
try{
Statementstmt=con.createStatement();
}finally{
if(con!=null&&!con.isClosed()){
con.close();
}
}
(2)只管制止利用Thread.resume(),Thread.stop(),Thread.suspend()和Runtime.runFinalizersOnExit()办法。
这些办法在平常的开辟大概是教科书内里也有效到过,可是这些办法会招致四锁的偏向。一下有充分的材料来讲明为何不倡议用上述办法。
参考:1."java.lang.Thread"intheJDKAPIdocumentation
2.http://java.sun.com/j2se/1.3/docs/guide/misc/threadPrimitiveDeprecation.html
3.PaulHyde:"JavaThreadProgramming"
Sams,ISBN:0-672-31585-8pp.270
(3)在暗示长整常量的时分,用L来取代l.
由于l很简单和1混一同。
毛病示例:
longtemp=23434l;
准确示例:
longtemp=23434L;
参考:KenArnold,JamesGosling:"TheJavaProgrammingLanguageSecondEdition"AddisonWesley,1997,pp.108
(4)最幸亏jsp开首写一条正文
在jsp文件头下面写一条正文,如许能够匡助他人来了解你的代码。这条划定规矩不但合用于jsp,更是用于任何开辟的文档。
准确示例:<%--JSPcomment--%>
(5)明白的初始化一个机关类内里的一切的字段
由于没有初始化的字段会是一个潜伏的bug,以是最好初始化类内里的一切的字段。出格是静态的字段,最幸亏一入手下手就分派一个初始值
毛病示例:
publicclassCSI{
publicCSI(){
this(12);
k=0;
}
publicCSI(intval){
j=val;
}
privateinti=5;
privateintj;
privateintk;
}
准确示例:
publicclassCSIFixed{
publicCSIFixed(){
this(12);
}
publicCSIFixed(intval){
j=val;
k=0;
}
privateinti=5;
privateintj;
privateintk;
}
参考:http://www.ambysoft.com/javaCodingStandards.pdf
(5)国际化开辟倡议:逻辑操纵符不要再一个单个的字符的后面大概前面
一个单个字符的前后不要用逻辑操纵符,假如代码要在一个国度情况中运转的话。我们可使用字符对照办法,这些办法利用一致字符对照尺度来界说字符的属性的。
毛病示例:publicclassCLO{
publicbooleanisLetter(charch){
boolean_isLetter=(ch>=a&&ch<=z)//毛病
||(ch>=A&&ch<=Z);
return_isLetter;
}
}
准确示例:
publicclassCLOFixed{
publicbooleanisLetter(charch){
boolean_isLetter=Character.isLetter(ch);
return_isLetter;
}
}
参考:http://java.sun.com/docs/books/tutorial/i18n/intro/checklist.html
更多的字符对照办法请参考:http://java.sun.com/docs/books/tutorial/i18n/text/charintro.html
(6)国际化开辟倡议:不要对日期对象利用Date.toString()
不要利用Date.toString()办法,日期格局关于区域和言语分歧的国度来讲是纷歧样的,务必不要利用。
毛病示例:DateFormat类供应了一个预界说的格局范例来指定当地的格局。
publicvoidprintToday(){
Datetoday=newDate();
StringtodayStr=today.toString();
System.out.println(todayStr);
}
准确示例:
publicvoidprintToday(){
LocalecurrentLocale=Locale.getDefault();
DateFormatdateFormatter=DateFormat.getDateInstance(
DateFormat.DEFAULT,currentLocale);
Datetoday=newDate();
StringtodayStr=dateFormatter.format(today);
System.out.println(todayStr);
}
参考:http://java.sun.com/docs/books/tutorial/i18n/intro/checklist.html
http://java.sun.com/docs/books/tutorial/i18n/format/dateFormat.html
(7)国际化开辟倡议:不要对数字变量利用toString()办法
在环球化的开辟中,不要对数字变量利用toString()办法,关于java.lang.Number的任何子类都合用。包含:BigDecimal,BigInteger,Byte,Double,Float,Integer,Long,andShort.关于如许的情形,java里也与界说了"NumberFormat"办法来格局化。
毛病示例:
publicclassNTS{
publicvoidmethod(Doubleamount){
StringamountStr=amount.toString();
System.out.println(amountStr);
}
}
准确示例:
publicclassNTSFixed{
publicvoidmethod(Doubleamount){
LocalecurrentLocale=Locale.getDefault();
NumberFormatnumberFormatter=
NumberFormat.getNumberInstance(currentLocale);
StringamountStr=numberFormatter.format(amount);//
System.out.println(amountStr++currentLocale.toString());
}
}
参考:http://java.sun.com/docs/books/tutorial/i18n/intro/checklist.html
http://java.sun.com/docs/books/tutorial/i18n/format/numberFormat.html
(8)国际化开辟倡议:不要利用String.equals()办法
倡议不要利用String.equals()办法,由于在一致字符对照尺度中纷歧定依照相干的按次来对照。Collator供应的预界说收拾划定规矩来排序string,Collator类挪用getInstance()办法,一样平常来讲,能够为默许的当地创立一个Collator。比方:CollatormyCollator=Collator.getInstance();创立Collator的时分你也能够指定一个特别的locale。比方:CollatormyFrenchCollator=Collator.getInstance(Locale.FRENCH);然后就能够挪用Collator.compare()来实行一个当地的字符对照myCollator.compare(s1,s2);从这里能够懂得更多的有关Collator类的信息:http://java.sun.com/docs/books/tutorial/i18n/text/collationintro.html
毛病示例:
publicclassSE{
publicbooleancompstr(Strings1,Strings2){
booleanb=(s1.equals(s2));
returnb;
}
}
准确示例:
publicclassSEFixed{
publicbooleancompstr(Strings1,Strings2){
CollatormyCollator=Collator.getInstance();
booleanb=(myCollator.compare(s1,s2)==0);
returnb;
}
}
参考:http://java.sun.com/docs/books/tutorial/i18n/intro/checklist.html
http://java.sun.com/docs/books/tutorial/i18n/text/locale.html
(9)国际化开辟倡议:不要利用StringTokenizer()办法
毛病示例:StringTokenizerst=newStringTokenizer(str);
能够从这里失掉更多的信息:‘
参考:http://java.sun.com/docs/books/tutorial/i18n/intro/checklist.html
(10)国际化开辟倡议:不要利用Time.toString()办法
由于工夫的格局各个国度也纷歧样。假如你利用日期格局类,你的使用就可以够活着界上各个中央准确的显现工夫和日期了。起首,用getTimeInstance()办法创立一个formatter。然后,挪用format()办法。
毛病示例:
publicclassTTS{
publicvoidprintTime(Timet1){
StringtimeStr=t1.toString();
System.out.println(timeStr);
}
}
准确示例:
importjava.sql.Time;
importjava.text.DateFormat;
importjava.util.Locale;
publicclassTTSFixed{
publicvoidprintTime(Timet1){
DateFormattimeFormatter=DateFormat.getTimeInstance(
DateFormat.DEFAULT,Locale.getDefault());
StringtimeStr=timeFormatter.format(t1);
System.out.println(timeStr);
}
}
java也能做一些底层语言开发做的事情(难度很高,不是java顶尖高手是做不来的), |
|