一个好的开发规范,就是团队合作的基石
Java 文件
采用驼峰命名法
文件头
/**
* @author gmf (可以写固定的名称或者使用计算机用户名 ${USER})
* @description
* @date ${DATE}.
*/
Activity
以 Activity
作为后缀,如:LoginActivity
Fragment
以 Fragment
作为后缀,如:UserFragment
Adapter
以 Adapter
作为后缀,如:CollectAdapter
常量
全部大写,单词之间用下划线分开,如:
private final String CACHE_PATH = "cache_path";
静态变量
首字母小写,加前缀s,如:
private static String sName;
成员变量
首字母小写,加前缀m,如:
private int mAge;
局部变量
首字母小写,不用加前缀,如:
int age;
控件变量
Android的控件变量,采用“逻辑功能+控件缩写”的形式,如:登陆按钮 loginBtn
常见的控件缩写对照表
组件名称 | 缩写 |
---|---|
TextView | Tv (tv) |
ListView | Lv (lv) |
EditText | Edt (edt) |
CheckBox | Chk (chk) |
Button | Btn (btn) |
ImageButton | Ibtn (ibtn) |
ToggleButton | Tbtn (tbtn) |
RadioButton | Rbtn (rbtn) |
ImageView | Iv (iv) |
ProgressBar | Pbar (pbar) |
ScrollView | Sclv (sclv) |
LinearLayout | Llyt (llyt) |
RelativeLayout | Rlyt (rlyt) |
TableLayout | Tlyt (tlyt) |
FrameLayout | Flyt (flyt) |
这里有个小细节,变量声明一般这样,static 变量放在最前面,控件变量放中间,普通成员变量放在后面,示例如下:
// static 变量
private static final String PHOTO = "photo";
// 控件变量
private ImageView mPhotoIv;
private FloatingActionButton mEditFbtn;
private EditText mDescriptionEdt;
private EditText mAddressEdt;
private EditText mTimeEdt;
private EditText mCategoryEdt;
// 普通成员变量
private Photo mPhoto;
Android 资源文件
layout
1. 布局文件
格式:界面类型_模块.xml / 界面类型_模块_描述.xml
如:activity_login.xml
, fragment_login.xml
, dialog_login.xml
2. 列表项
格式:item_控件类型_功能描述 / item_控件类型_模块_功能描述
如:item_lv_order.xml
, item_gv_main_photo.xml
3. 包含项
格式:包含类型_模块_描述 / 包含类型_控件类型_描述
如: merge_detail_footer.xml
, include_refreshview_header.xml
4. 控件id
格式:模块名_控件类型_描述
activity_category.xml 文件下显示姓名的 TextView,其命名为 android:id="@+id/category_tv_name"
drawable
1. 静态图片
格式:
类型_common_描述:多个模块共用
类型_模块_描述:单个模块共用
类型_模块_描述_状态:配合动态风格使用
ic_common_delete.png (删除按钮,多个模块共用)
ic_accont_head.png(账户模块下的头像)
ic_theme_add_nomal.png (添加主题按钮的正常状态)
ic_theme_add_pressed.png (添加主题按钮的被按下状态)
2. 动态风格
格式:
common_描述:多个模块共用
模块_描述:单个某块共用
common_delete.xml (共用)
theme_add.xml (添加主题按钮)
string.xml
Java 文件和布局文件中,除了注释可以是中文,其他文字性说明都要放入 string.xml 中统一管理,它们在 string.xml 中的命名规范如下:
1. xml
格式:
控件id:控件有声明 id
模块_描述:控件无声明 id
<string name=”account_btn_login”>登录</string>
<string name=”account_forget_pwd”>忘记密码</string>
2. Java
格式:模块_描述
新闻详情页,用户点击收藏时提示「已收藏」:
ToastUtil.show(getString(R.string.detail_collected));
colors.xml
只定义颜色表,colors.xml文件中只是映射颜色的一个RGBA值,而没有其它的
糟糕的例子
<resources>
<color name="listview_divider">#cfcfd2</color>
<color name="listview_normal">#ffffff</color>
<color name="listview_selected">#fafafa</color>
<color name="actionbar_item_normal">#20699f</color>
<color name="actionbar_item_selected">#105085</color>
</resources>
使用这种格式,你会非常容易的开始重复定义RGBA值,这使如果需要改变基本色变的很复杂。同时,这些定义是跟一些环境关联起来的,如 button, 应该放到一个按钮风格中,而不是在color.xml文件中。
好的例子
<resources>
<!-- grayscale -->
<color name="white">#FFFFFF</color>
<color name="gray_light">#DBDBDB</color>
<color name="gray">#939393</color>
<color name="gray_dark" >#5F5F5F</color>
<!-- basic colors -->
<color name="green">#27D34D</color>
<color name="blue">#2A91BD</color>
<color name="orange">#FF9D2F</color>
<color name="red">#FF432F</color>
</resources>
dimens.xml
像对待colors.xml一样对待dimens.xml文件,看个好的例子:
<resources>
<!-- font sizes -->
<dimen name="font_larger">22sp</dimen>
<dimen name="font_large">18sp</dimen>
<dimen name="font_normal">15sp</dimen>
<dimen name="font_small">12sp</dimen>
<!-- typical spacing between two views -->
<dimen name="spacing_huge">40dp</dimen>
<dimen name="spacing_large">24dp</dimen>
<dimen name="spacing_normal">14dp</dimen>
<dimen name="spacing_small">10dp</dimen>
<dimen name="spacing_tiny">4dp</dimen>
<!-- typical sizes of views -->
<dimen name="button_height_tall">60dp</dimen>
<dimen name="button_height_normal">40dp</dimen>
<dimen name="button_height_short">32dp</dimen>
</resources>
style.xml
Android中,styles这个文件名称并没有作用,起作用的是在文件里xml的 <style>
标签。因此你可以有多个style文件,如:
- styles.xml
- style_home.xml
- styles_forms.xml