心遠專欄
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
::
24 隨筆 :: 0 文章 :: 9 評論 :: 0 Trackbacks
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(1)
給我留言
查看公開留言
查看私人留言
隨筆分類
(30)
Eclipse(3)
(rss)
EMF
(rss)
GIS (1)
(rss)
hibernate (1)
(rss)
java (7)
(rss)
struts (1)
(rss)
其它(5)
(rss)
數據庫(4)
(rss)
設計模式(1)
(rss)
軟件開發(7)
(rss)
最新評論
1.?re: 一位高級程序員給學弟學妹的建議[轉貼]
基本好了學什么都快
--心遠
2.?re: 一位高級程序員給學弟學妹的建議[轉貼]
同上
--wq
3.?re: 一位高級程序員給學弟學妹的建議[轉貼]
基礎知識確實很重要,可惜基礎不好,非科班畢業
--loocky
4.?re: 一位高級程序員給學弟學妹的建議[轉貼]
基礎很重要!頂了!
--心內求法
5.?re: 比Google還先進?體驗微軟版“虛擬地球”
要是咱們國家的一個公司做出差不多的軟件多牛呀 哈哈
--心遠
閱讀排行榜
1.?TOMCAT:禁止TOMCAT目錄訪問(1895)
2.?Mysql中的select top(1302)
3.?什么是設計模式 (838)
4.?2006年10大變態站名網站排名 (轉)(755)
5.?Mysql 學習筆記(二)(725)
評論排行榜
1.?一位高級程序員給學弟學妹的建議[轉貼](4)
2.?王者之爭:.NET PK J2EE (3)
3.? 比Google還先進?體驗微軟版“虛擬地球”(2)
4.?tomcat web開發中的中文問題(一)(0)
5.?2006年10大變態站名網站排名 (轉)(0)
JAVA規則開發篇
本文介紹的JAVA規則的說明分為3個主要級別,本篇拋棄了平時開發中很少遇到的情況,那些用得比較少的以后再
高級
篇里面出現。并有六個有用的
國際
軟件開發重要注意的有關String的問題,遵守了這些規則可以提高
程序
的
效率
、使代碼又更好的可讀性等。
(1) 如果有JDBC連接沒有關掉的話,需要在"finally"方法中關掉
如果
數據庫
連接失敗或者是沒有釋放連接,看上去無關緊要。但是其他的用戶就需要用更長的時間等待連接,這樣數據庫利用效率就會下降。確保你的代碼在任何情況下,包括出錯或者程序異常終止的情況下都釋放數據庫連接。在"finally"方法中關掉連接,就可以確保這一點。
錯誤示例:
try {
Statement stmt = con.createStatement();
} catch(SQLException e) {
e.printStackTrace();
}
正確示例:
try {
Statement stmt = con.createStatement();
} finally {
if (con != null && !con.isClosed()) {
con.close();
}
}
ps:這個問題也是一直困擾一些提供jsp+
mysql
空間的
網站
,很多個人網站沒有關閉數據庫連接,結果造成整個
服務
器
速度
下降。
(2) 盡量避免使用'Thread.resume ()', 'Thread.stop ()', 'Thread.suspend ()'和 'Runtime.runFinalizersOnExit ()' 方法。
這些方法在平時的開發或者是教科書里面也有用到過,但是這些方法會導致四鎖的傾向。一下有充足的
資料
來說明為什么不建議用上述方法。
參考:1."java.lang.Thread" in the JDK API documentation
2.
http://java.sun.com/j2se/1.3/docs/g...eprecation.html
3.Paul Hyde: "Java Thread Programming"
Sams, ISBN: 0-672-31585-8 pp. 270
(3) 在表示長整常量的時候,用L來代替l.
因為l很容易和1混一起。
錯誤示例:
long temp = 23434l;
正確示例:
long temp = 23434L;
參考:Ken Arnold, James Gosling: "The Java Programming Language Second Edition"Addison Wesley, 1997, pp.108
(4) 最好在jsp開頭寫一條注釋
在 jsp文件頭上面寫一條注釋,這樣可以幫助別人來理解你的代碼。這條規則不僅適用于jsp,更是用于任何開發的文檔。
正確示例:<%-- JSP comment --%>
(5)明確的初始化一個構造類里面的所有的字段
因為沒有初始化的字段會是一個潛在的bug,所以最好初始化類里面的所有的字段。特別是靜態的字段,最好在一開始就分配一個初始值
錯誤示例:
public class CSI {
public CSI () {
this (12);
k = 0;
}
public CSI (int val) {
j = val;
}
private int i = 5;
private int j;
private int k;
}
正確示例:
public class CSIFixed {
public CSIFixed () {
this (12);
}
public CSIFixed (int val) {
j = val;
k = 0;
}
private int i = 5;
private int j;
private int k;
}
參考:
http://www.ambysoft.com/javaCodingStandards.pdf
(6) 國際化開發建議:邏輯操作符不要再一個單個的字符的前面或者后面
一個單個字符的前后不要用邏輯操作符,如果代碼要在一個國家環境中運行的話。我們可以使用字符比較方法,這些方法使用統一字符比較標準來定義字符的屬性的。
錯誤示例:public class CLO {
public boolean isLetter (char ch) {
boolean _isLetter = ( ch >= 'a' && ch <= 'z') //錯誤
|| (ch >= 'A' && ch <= 'Z');
return _isLetter;
}
}
正確示例:
public class CLOFixed {
public boolean isLetter (char ch) {
boolean _isLetter = Character.isLetter(ch);
return _isLetter;
}
}
參考:
http://java.sun.com/docs/books/tuto.../checklist.html
更多的字符比較方法請參考:
http://java.sun.com/docs/books/tuto.../charintro.html
(7) 國際化開發建議:不要對日期對象使用'Date.toString ()'
不要使用'Date.toString ()'方法,日期格式對于地區和語言不同的國家來說是不一樣的,務必不要使用。
錯誤示例:'DateFormat'類提供了一個預定義的格式類型來指定本地的格式。
public void printToday () {
Date today = new Date ();
String todayStr = today.toString ();
System.out.println (todayStr);
}
正確示例:
public void printToday () {
Locale currentLocale = Locale.getDefault ();
DateFormat dateFormatter = DateFormat.getDateInstance (
DateFormat.DEFAULT, currentLocale);
Date today = new Date ();
String todayStr = dateFormatter.format (today);
System.out.println (todayStr);
}
參考:
http://java.sun.com/docs/books/tuto.../checklist.html
http://java.sun.com/docs/books/tuto...dateFormat.html
(8) 國際化開發建議:不要對數字變量使用'toString ()'方法
在全球化的開發中,不要對數字變量使用'toString ()'方法,對于java.lang.Number的任何子類都適用。包括:BigDecimal, BigInteger, Byte, Double, Float, Integer, Long, and Short.對于這樣的情況,java里也與定義了"NumberFormat"方法來格式化。
錯誤示例:
public class NTS {
public void method (Double amount) {
String amountStr = amount.toString ();
System.out.println (amountStr);
}
}
正確示例:
public class NTSFixed {
public void method (Double amount) {
Locale currentLocale = Locale.getDefault ();
NumberFormat numberFormatter =
NumberFormat.getNumberInstance (currentLocale);
String amountStr = numberFormatter.format (amount); //
System.out.println (amountStr + ' ' + currentLocale.toString ());
}
}
參考:
http://java.sun.com/docs/books/tuto.../checklist.html
http://java.sun.com/docs/books/tuto...mberFormat.html
(9) 國際化開發建議:不要使用'String.equals ()'方法
建議不要使用'String.equals ()'方法,因為在統一字符比較標準中不一定按照相關的順序來比較。'Collator'提供的預定義整理規則來排序string,Collator類調用'getInstance ()'方法,一般來說,可以為默認的本地創建一個Collator。例如:Collator myCollator = Collator.getInstance ();創建Collator的時候你也可以指定一個特殊的locale。例如:Collator myFrenchCollator = Collator.getInstance (Locale.FRENCH);然后就可以調用'Collator.compare ()'來執行一個本地的字符比較myCollator.compare (s1,s2);從這里可以了解更多的有關Collator類的信息:
http://java.sun.com/docs/books/tuto...ationintro.html
錯誤示例:
public class SE {
public boolean compstr (String s1, String s2) {
boolean b = (s1.equals (s2));
return b;
}
}
正確示例:
public class SEFixed {
public boolean compstr (String s1, String s2) {
Collator myCollator = Collator.getInstance ();
boolean b = (myCollator.compare(s1,s2) == 0);
return b;
}
}
參考:
http://java.sun.com/docs/books/tuto.../checklist.html
http://java.sun.com/docs/books/tuto...ext/locale.html
(10) 國際化開發建議:不要使用'StringTokenizer()'方法
錯誤示例:StringTokenizer st = new StringTokenizer(str);
可以從這里得到更多的信息:‘
參考:
http://java.sun.com/docs/books/tuto.../checklist.html
(11) 國際化開發建議:不要使用'Time.toString ()'方法
因為時間的格式各個國家也不一樣。如果你使用日期格式類,你的應用就能夠在世界上各個地方正確的顯示時間和日期了。首先,用'getTimeInstance ()'方法創建一個formatter。然后,調用'format ()'方法。
錯誤示例:
public class TTS {
public void printTime (Time t1) {
String timeStr = t1.toString ();
System.out.println (timeStr);
}
}
正確示例:
import java.sql.Time;
import java.text.DateFormat;
import java.util.Locale;
public class TTSFixed {
public void printTime (Time t1) {
DateFormat timeFormatter = DateFormat.getTimeInstance(
DateFormat.DEFAULT, Locale.getDefault ());
String timeStr = timeFormatter.format(t1);
System.out.println (timeStr);
}
}
??
posted on 2006-11-13 12:46
心遠
閱讀(154)
評論(0)
編輯
收藏
所屬分類:
java
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
javascript進階之變量篇
tomcat web開發中的中文問題(一)
java讀取遠程文件代碼
String中三種加法的區別
使用 dom4j 解析 XML
java中四種操作xml方式的比較
JAVA規則開發篇
Powered by:
BlogJava
Copyright © 心遠
主站蜘蛛池模板:
镇巴县
|
郸城县
|
高青县
|
岳阳市
|
玉环县
|
汶川县
|
岚皋县
|
长沙市
|
湘潭市
|
綦江县
|
开远市
|
玛多县
|
靖远县
|
双江
|
城市
|
平昌县
|
龙门县
|
辉县市
|
五原县
|
祁连县
|
吉首市
|
铜山县
|
浪卡子县
|
南澳县
|
东宁县
|
丹棱县
|
顺昌县
|
剑河县
|
饶阳县
|
乌鲁木齐市
|
上高县
|
承德市
|
临沂市
|
黔江区
|
莫力
|
棋牌
|
明星
|
中超
|
木里
|
伊川县
|
分宜县
|