編輯:關於Android編程
Google官方Java代碼風格參考規范鏈接, 中文翻譯參考版鏈接。
規則:包名全部小寫,才用反域名命名規則,一級包名是頂級域名,通常為com, edu, gov, net, org等,二級包名,通過為公司名或部門名或者個人名,三級包名通常為項目名,四級包名為模塊名或者層級名。以下是從層級包名來劃分android項目中采用的包劃分結構
com.domain.xxx.activity //用戶界面中所有的Activity類
com.domain.xxx.fragment //界面中所有的Fragment類
com.domain.xxx.adapter //界面中所有的Adapter類(適配器類)
com.domain.xxx.view //自定義的View類
com.domain.xxx.service //後台Service類
com.domain.xxx.util //項目中常用的公共工具類(網絡, IO, 日志等)
com.domain.xxx.bean //實體模型類
com.domain.xxx.db //數據庫操作相關的類
com.domain.xxx.config //所有的配置相關的類
com.domain.xxx.api //網絡api接口相關de 類
規則:采用大駝峰式命名法,首字母大寫,盡量避免縮寫,除非該縮寫是眾所周知的,比如HTML,URL,如果類名稱包含單詞縮寫,則單詞縮寫的每個字母均應大寫。以下列舉的是android中幾種最為常用的類的命名。
class LoginActivity; //activity類
class DiscoverFragment; //fragment類
class AnalysisService; //service類
class WakeupRankAdapter; //adapter類
class StringUtils; //工具類
class UserBean; //模型類
class ApiImpl; //接口實現類
規則:命名規則與類命名一樣采用大駝峰式命名法,首字母大寫,多以able, ible, er結尾
interface Comparable;
interface Accessible;
interface OnClickListener;
規則:采用小駝峰命名法,首字母小寫,方法名采用動詞或動名詞結構。方法的命名應該與方法的真正行為具有對應關系,下面給出一些方法名的動詞前綴標示的建議。
規則:采用小駝峰命名法,首字母小寫。變量名應簡短且能描述其用途,盡量避免拼音,無意義地縮寫。除非是臨時變量,否則不建議使用單個字符的變量名,如i, j, k。對於變量命名,還有一種風格是google的以字母m為前綴(m為member縮寫),在android 源碼中隨處可見。
private int userName; //java的一般性風格
private int mUserName; //google的成員變量風格,m為member的縮寫
規則:常量使用全大寫字母加下劃線的方式命名。
public static final int TAG= "tag";
public static final int START_CLASS_NOT_FOUND = -2;
下面介紹的與android關系更加緊密:
規則:首先需要滿足第5條變量的規則, 模式:邏輯名 + view縮寫
Button sendNewsBtn;
TextView passwordTxt;
規則:view縮寫_模塊名_邏輯名
android:id="@+id/btn_news_send" //樣例
view縮寫如下:
規則:全部小寫,采用下劃線命名法。layout文件命名:組件類型_{模塊_}功能.xml
activity_news_title.xml //樣例
模式:前綴{_控件}{_范圍}{_後綴},控件、范圍、後綴可選
bg_login_pressed.png //樣例
規則:{范圍_}動畫類型_動畫方向。
login_fade_in.xml //樣例
模式:activity名_{范圍_}邏輯名
<string name="login_username">用戶名</string> //樣例
模式:前綴{_控件}{_范圍}{_後綴}, 控件、范圍、後綴可選,
<color name="bg_login">#FFFFFF</color> //樣例
不要直接忽略Exceptions
例如下面的示例,永遠不要這樣做,無法預測未來可能的變化
void setServerPort(String value) {
try {
serverPort = Integer.parseInt(value);
} catch (NumberFormatException e) { }
}
正確的做法應該如下:
void setServerPort(String value) throws ConfigurationException {
try {
serverPort = Integer.parseInt(value);
} catch (NumberFormatException e) {
throw new ConfigurationException("Port " + value + " is not valid.");
}
}
import采用完全限定名
不提倡:
import foo.*;
正確做法:
import foo.Bar;
括號風格:
不提倡:
if (condition)
body();
正確做法:
if (condition) {
body();
}
使用空格來縮進
使用4個空格縮進來代表塊,而絕不使用tab鍵; 使用8個空格來代表行包裹,包括函數調用。
1.類注釋 每個類完成後應該有作者姓名和聯系方式的注釋,對自己的代碼負責
/** * 作者: yuanhh * 時間: 13-12-20 19:25 * 描述: 用戶登錄 * 聯系方式: [email protected] */ public class Login{ … }
2.方法注釋 每一個成員方法(包括自定義成員方法、覆蓋方法、屬性方法)的方法頭都必須做方法頭注釋
/* * 方法名: * 功 能: * 參 數: * 返回值:無 */
3.快注釋
private class MessageObserver extends ContentObserver { public MessageObserver() { super(mainHandler); }
public void onChange(boolean hasChanged) {
// 發送更新UI的消息
mHandler.sendMessage(mHandler.obtainMessage(0x2));
} }
4.資源文件注釋
Volley現在已經被官方放到AOSP裡面,已經逐步成為Android官方推薦的網絡框架。類抽象對Http協議的抽象Requeset顧名思義,對請求的封裝,實現了Comp
從API 8開始,新增了一個類: android.media.ThumbnailUtils這個類提供了3個靜態方法一個用來獲取視頻第一幀得到的Bitmap,2個對圖片進行
第一步: 打開手機主菜單,選擇“設置”,然後選擇“無線和網絡”第二步:選擇“虛擬專用網設置&rd
讓我們一起學習一下模擬器的使用。本文內容如下: 模擬器和真機的比較 創建Android模擬器(emulator) 運行Android模擬器 設置簡體中文語言界面