編輯:關於Android編程
注釋
【規則1】必須用 javadoc 來為類生成文檔。不僅因為它是標准,這也是被各種java 編譯器都認可的方法。
【規則2】在文件的開始部分應該有文件的說明信息,應包含如下信息:
(1)版權信息;
(2)文件名;
(3)功能描述;
(4)作者;
(5)完成日期;
(6)版本信息;
(1.1)eclipse類模版:
/**
* ? 2012 amsoft.cn
* 名稱:${file_name}
* 描述:${todo}.
* @author ${user}
* @date:${date} ${time}
* @version v1.0
*/
示例:
/**
* ? 2012 amsoft.cn
* 名稱:AbDateUtil.java
* 描述:日期處理類.
*
* @author 還如一夢中
* @version v1.0
* @date:2013-01-18 下午11:52:13
*/
【規則3】變量名字要求含義明確,盡量加上注釋,每個變量中間加一個空行,格式如下:
/**錯誤碼*/
public String errorCode;
/**錯誤信息*/
public String message;
【規則4】注釋應該增加代碼的清晰度,內容要清楚、明了,含義准確,防止注釋二義性。代碼注釋的目的是要使代碼更易於被同時參與程序設計的開發人員以及其他後繼開發人員理解。
【規則5】保持注釋的簡潔。最好的注釋應該是簡單明了的注釋。只需提供足夠的信息,使別人能夠理解你的代碼。
【規則6】注釋與代碼應保持一致。修改代碼同時修改相應的注釋;不再有用的注釋要刪除。
【規則7】注釋應與其描述的代碼相近,對代碼的注釋應放在其上方,不可放在下面,如放於上方則需與其上面的代碼用空行隔開。
命名
【規則1】使用可以准確說明變量/字段/類的完整的英文描述符。
【規則2】采用大小寫混合,提高名字的可讀性。一般應該采用小寫字母,但是類和接口的名字的首字母,以及任何中間單詞的首字母應該大寫。
【規則3】除了部分被大家公認的縮寫,盡量少用縮寫,如果有使用了縮寫則一定要注釋注明。
【規則4】 避免使用長名字(最好不超過15個字母)。
【規則5】避免使用相似或者僅在大小寫上有區別的名字。
【規則6】避免使用下劃線作為名字。以下劃線為首末字母的名字通常為系統保留,除預處理定義之外,一般不用作用戶命名。更重要的是,下劃線經常造成麻煩而且難輸入,所以盡量避免使用。
【規則7】對於變量命名,禁止取單個字符(如 i、j、k...),除了要有具體含義外,還能表明其變量類型、數據類型等,但 i、j、k 作局部循環變量是允許的。
【規則8】package 的名字原則應該都是由一個小寫單詞組成;如果 package 名字由多個單詞組成,所有的單詞都應是小寫。
【規則9】屬性的命名必須遵循命名基本規范,建議按照匈牙利命名法進行命名。在某些情況下如果需要明確區分屬性和方法內部局部變量,建議屬性名稱以"m"為前綴,例如: mUser。
【規則10】類方法的命名應采用完整的英文描述符,大小寫混合使用:所有中間單詞的 第一個字母大寫。類方法名稱的第一個單詞常常采用一個有強烈動作色彩的動詞。示例: openAccount() queryUser()。這種約定常常使人一看到類方法的名稱就能判斷它的功能。雖然這種約定要使開發者多做一 些輸入的工作,因為類方法名常常較長,但是回報是提高代碼的可理解性。
【規則11】 靜態常量字段(static final)全部采用大寫字母,單詞之間用下劃線分隔。 示例:PREFS_NAME。
方法
【規則1】函數的規模盡量限制在 200 行以內。
【規則2】一個方法僅完成一件功能。如果一個方法實現多個功能,可以考慮分拆成多個方法,每個方法實現一個功能。
【規則3】如果多段代碼重復做同一件事情,那麼可考慮提供一個公用的方法實現這個功能,供其它方法調用。
【規則4】減少函數本身或函數間的遞歸調用。
【規則5】檢查函數所有參數輸入的有效性。例如參數傳入 ArrayList 對象為空,如果直接使用會導致程序異常。
【規則6】對方法的異常中應有全面的處理,不要想當然在 try 塊中實現的功能中只可 能發生某一種異常,實際上可能會發生很多異常,如:IOException、NullPointerException 等,對拋出的異常最後應加上捕捉默認的 Exception,並進行處理。例:
try{
......
}catch(SQLException sqle){
......
//捕捉其它所有的Exception
}catch(Exception e){
//處理異常
......
}
【規則7】對所調用函數的錯誤返回碼要仔細、全面地處理。
【規則8】去掉沒有用、沒必要的變量、代碼。程序中的垃圾代碼不僅占用額外的空間,而且很可能給程序的測試、維護等造成不必要的麻煩。
【規則9】位於 for 循環中作為計數器值的數字常量,除了-1,0 和 1 之外,不應被直接 寫入代碼。
規則
【規則1】盡早釋放無用的對象。不用的對象應該及時賦為null。
String a = "一塊內存";
a = null;
【規則2】方法內創建對象或變量。一些局部使用的對象或變量應定義在方法內,一但方法返回,方法內創建的對象即符合GC回收條件,返回的對象除外。在下面例子中,方法返回後,其中的a、b 、strBuf 符合,c不符合。
private static String getSay() {
StringBuffer strBuf = new StringBuffer();
String a = "你好";
String b = "小明";
String c = null;
strBuf.append(a).append(b);
c = strBuf.toString();
return c;
}
【規則3】集合數據類型,包括數組,鏈表等數據結構。這些數據結構對GC來說,回收更為復雜,應該盡早將不用的引用對象賦為null。在下面兩段代碼中定義的對象都不能釋放,因為集合中還引用著這些對象,要釋放這些對象必須將它們從集合中移除,最簡單的方式時直接將集合置為null。
//代碼段1
List
for(int j=0;j<100;j++){
Item item = new Item(String.valueOf(j));
items.add(item);
item = null;
}
//代碼段2
Item item = null;
for(int j=0;j<100;j++){
item = new Item(String.valueOf(j));
items.add(item);
item = null;
}
【規則4】盡可能少的使用全局變量,static全局變量,盡量用局部變量代替。這兩種方式都是靜態存儲方式,只是作用域不同,其中普通的全局變量作用於整個源程序,而靜態的全局變量作用於被定義的源文件中,即其他源文件內無法訪問。把局部變量改為靜態變量更改了它的存儲方式即生存周期,把全局變量改為靜態改變了它的作用域,所以原則時能用局部決不用全局。
【規則5】static變量在程序運行期間其內存是共享的,且只有一份,所以有時將一些變量聲明為static,可以起到節約內存空間的作用,但是由於靜態變量生命周期很長,不易被系統回收,所以使用靜態變量要合理,不能盲目的使用。
【規則6】類內私有常量盡量用final來聲明,程序中供全局使用的常量可以聲明為static final。
【規則7】盡量少用finalize函數。finalize函數是Java提供給程序員一個釋放對象或資源的機會。但它會加大GC的工作量。
【規則8】當程序有一定的等待時間,可以手動執行System.gc(),通知GC運行,但強制內存回收對於系統自動的內存回收機制會產生負面影響,會加大系統自動回收的處理時間,所以應該盡量避免顯式使用System.gc()。
【規則9】盡量少用finalize函數。finalize函數是Java提供給程序員一個釋放對象或資源的機會。但是,它會加大GC的工作量,因此盡量少采用finalize方式回收資源。
【規則10】在使用圖片資源過多時,使用軟引用(SoftReference)緩存。使用軟引用定義的資源在內存不夠的時候會自動被系統回收。能夠最大限度的保證不產生OutOfMemory異常,一般用於緩存的實現,但缺點是軟引用的對象初始化比較耗時,我們還要負責對象對回收後的重建工作,比較麻煩。
【規則11】適當的使用弱引用(WeakReference)。當定義了一個對象,用弱引用記住它後,在下一次GC運行時就會把它當作無用的對象回收,和軟引用的區別是不會根據內存情況判斷。
命名
【規則1】layout文件的命名使用全部小寫字母加下橫線組合,每個英文描述符用下橫線分格(最好不超過3個),且只能以字母開頭和結束。
【規則2】名字的定義同Java。
【規則3】提示與文字信息必須定義在string.xml中。
規則
【規則1】數據庫的操作,應記得關閉游標和數據庫,在需要SimpleCursorAdapter時,可使用Activity.startManagingCursor(Cursor c)來管理游標,使游標的生命周期和Activity的生命周期一致;
【規則2】在自定義Adapter時一定要使用緩存的convertView,標准的方法參照ListView相關章節;
【規則3】Bitmap對象在不使用時應先調用recycle() 方法釋放內存,再將對象賦為null;
【規則4】區分Application Context和Activity Context,不讓生命周期長的對象引用Activity Context,可以避免Activity不能被銷毀,對於生命周期長的對象,可以使用Application Context。
【規則5】在AndroidManifest.xml文件中配置Activity時,可添加配置防止在橫豎屏切換時重新加載Activity,android:configChanges="orientation|keyboardHidden|navigation"。
【規則6】為了國際化和可維護性的需要,在String.xml中配置字符串,在Java代碼中通過this.getResources().getString(int id)方法獲取。
【規則7】為了適應不同的分辨率,不同的像素密度,布局推薦使用dip,文字使用sp。
1、fragment簡介我對fragment的理解是基於activity的,對於大多數的基本開始發時,我們最先遇到的就是用activity來開發。 簡單的例子,新建一個最
Android客戶端請求服務器端的詳細解釋1. Android客戶端與服務器端通信方式: Android與服務器通信通常采用HTTP通信方式和Socket通信方式,而HT
布局文件:res/layout/activity_my.xml復制代碼 代碼如下:[html] <LinearLayout xmlns:android=
在移動應用中,很多時候都會用到圖片選擇、圖片裁剪等功能。最近我也在准備一個開源的相冊項目,以方便以後開發應用的時候使用,也盡可能的方便需要的人。一個完整的相冊,應該包含相