开发规范
2017-09-06 本文已影响20人
盗梦如画
项目
目录结构
项目命名规范:包(packages): 采用反域名命名规则,全部使用小写字母。一级包名为com,二级包名为xx(可以是公司或则个人的随便),三级包名根据应用进行命名,四级包名为模块名或层级名,五层包名功能模块名.
如项目包名为:com.ww.crazy
包名 | 包说明 |
---|---|
com.ww.xx.activities | 窗体集合 |
com.ww.xx.activities.xx | com.ww.xx.activities.user 用户模块设计到的窗体集合 |
com.ww.xx.bean | 数据模型 |
com.ww.xx.bean.xx | com.ww.xx.activities.user 用户模块设计到的数据模型集合 |
com.ww.xx.adapter | 列表适配或其它适配的类 |
com.ww.xx.adapter.xx | com.ww.xx.adapter.user 用户模块设计到的适配类 |
com.ww.xx.utils | 应用工具 |
com.ww.xx.widget | 自定义控件 |
com.ww.xx.config | 静态配置文件 |
com.ww.xx.api | 网络请求接口 |
com.ww.xx.service | Serveice服务 |
com.ww.xx.broadcast | Broadcast 服务 |
项目编码
项目编码格式:utf-8
Android命名规范(简版)
文件名
文件类型 | 命名规则 | 举例说明 |
---|---|---|
Activity | 主要内容+Activity | 个人信息页面: MemberActivity.java |
Fragemnt | 主要内容+Fragment | 设置页面: SettingFragment.java |
Service | 主要内容+Service | 音频服务: AudioService.java |
BroadCast | 主要内容+Broadcast | 消息广播: MessageBroadcast.java |
Adapter | 主要内容+类型+Adapter | 新闻列表数据Adapter: NewsListViewAdapter.java<br />新闻网格列表Adapter: NewsGridViewAdapter.java<br /> |
数据源Bean | 主要内容+Bean | 新闻数据结构: NewsBean.java |
自定义View | 主要内容+View类型 | 可拖动GridView: DragGridView.java |
工具类 | 主要内容+Util | 弹框工具: DialogUtil.java |
自定义接口 | 主要内容+Interface | 拖动接口: DragInterface |
Activity布局文件 | activity_+主要内容 | 个人信息页面: activity_member.xml |
Fragment布局文件 | fragment_+主要内容 | 设置画面: fragment_setting.xml |
列表item布局文件 | item_+主要内容+列表类型 | 新闻列表item: item_news_listview.xml<br />新闻网格列表item: item_news_gridview.xml |
include布局文件 | layout_+主要内容 | 标题栏: layout_titlebar.xml |
popupwindow布局文件 | pop_+主要内容 | 菜单选项:pop_menu_option |
dialog布局文件 | dialog_+主要内容 | 支付对话框:dialog_pay |
自定义view布局文件 | view_主要内容+[view类型] | 可拖动GridView: view_drag_gridview.xml |
selector文件 | 主要内容+_selector | 菜单selector: menu_selector.xml |
shape文件 | 主要内容+_shape | 菜单selector: menu_shape.xml |
anim文件 | 主要内容+_anim | 分享菜单显示动入: share_button_enter_anim.xml |
图片资源文件 | 类型+主要内容 | 按钮:btn_back.png<br />图标: icon_share.png<br />背景图: bg_login.png<br />菜单: menu_home.png<br />选择按钮:btn_check_holo_light_on.png, btn_check_holo_light_off.png |
impaort引用包规则
只需要引用需要使用到的类,禁止整体引用某个包
错误的: import foo.*;
正确的: import foo.Bar;
方法名
- 驼峰命名法,首字母小写,其它每个单词首字母大小,尽量满足动词在前的原则
- 命名有意义,能够传达变量的用途
- 属性方法以get/set开头
方法 | 说明 |
---|---|
initXX() | 初始化相关方法,使用init为前缀标识,如初始化布局initView() |
isXX() | checkXX()方法返回值为boolean型的请使用is或check为前缀标识 |
getXX() | 返回某个值的方法,使用get为前缀标识 |
setXX() | 设置某个值的方法,使用set为前缀标识 |
processXX() | 对数据进行处理的方法,尽量使用process为前缀标识 |
displayXX() | 弹出提示框和提示信息,使用display为前缀标识 |
saveXX() | 与保存数据相关的,使用save为前缀标识 |
resetXX() | 对数据重组的,使用reset前缀标识 |
clearXX() | 清除数据相关的 |
removeXXX() | 清除数据相关的 |
drawXXX() | 绘制数据或效果相关的,使用draw前缀标识 |
变量名
- 驼峰命名法,首字母小写,其它每个单词首字母大小
- 命名有意义,能够传达变量的用途
- i、j、k等只作为小型循环的循环索引变量。
- 避免用Flag来命名状态成员变量。
- 通过在结尾处放置一个量词,就可创建更加统一的变量,它们更容易理解,也更容易搜索。例如,请使用 strCustomerFirst和strCustomerLast,而不要使用strFirstCustomer和strLastCustomer。常 用的量词后缀有:First(一组变量中的第一个)、Last(一组变量中的最后一个)、Next(一组变量中的下一个变量)、Prev(一组变量中的上 一个)、Cur(一组变量中的当前变量)。
静态变量|常量
- 命名有意义,能够传达变量的用途
- 静态常量全部大写,单词之间使用_来连接
- 静态变量驼峰命名法,首字母小写,其它每个单词首字母大小
public class InputStream {
private static final int MAX_SKIP_BUFFER_SIZE = 2048; // 静态常量
private static String userName; // 静态变量
}
参数名
- 驼峰命名法,首字母小写,其它每个单词首字母大小
- 参数名前加下划线_
- 命名有意义,能够传达变量的用途
注释
- 方法需要整体注释,说明用途,参数,返回
- 方法内关键部份需要单行注释
使用标准括号规则
嵌套分支语句
class MyClass {
int func() {
if (something) {
// ...
} else if (somethingElse) {
// ...
} else {
// ...
}
}
}
代码块必须使用{}括号进行包裹。
类成员排序
- 常量
- 字段|变量
- 构造函数
- 覆盖方法和回调
- 公共方法
- 受保护的方法(protected)
- 私有方法
- 内部类或接口
eg:
public class MainActivity extends Activity {
private static final int MAX_SKIP_BUFFER_SIZE = 2048; // 静态常量
// 控件声明
private TextView tvTitle;
// 数据声明
private String title;
@Override
public void onCreate() {
...
}
public void setTitle(String _title) {
this.title = _title;
}
protected void beforeResume(){}
private void setUpView() {
...
}
static class AnInnerClass {
}
}
控件id命名
- 小写字母加下划线命名规则
- 使用方式"前缀+_主要内容"
控件 | 前缀缩写 |
---|---|
RelativeLayout | rl |
LinearLayout | ll |
FrameLayout | fl |
TextView | tv |
Button | btn |
ImageButton | img_btn |
ImageView | iv |
CheckBox | chk |
RadioButton | rb |
analogClock | ana_clk |
DigtalClock | dgt_clk |
DatePicker | dt_pk |
EditText | edit |
TimePicker | tm_pk |
toggleButton | tgl_btn |
ProgressBar | pro_bar |
SeekBar | sk_bar |
AutoCompleteTextView | auto_tv |
ZoomControl | zm_ctl |
VideoView | vdo_vi |
WebView | web_vi |
Spinner | spn |
Chronometer | cmt |
ScollView | scl_vi |
TextSwitch | txt_swt |
ImageSwitch | img_swt |
ListView | lv |
GridView | gv |
ExpandableList | epd_lt |
MapView | map_vi |
eg:
< TextView
android : id = " @+id/tv_name "
android : layout_width = " wrap_content "
android : layout_height = " wrap_content " />
对应java类:
public class MainActivity extends Activity{
TextView tvName;
}
UI编码规范
布局文件
- 使用ScreenUtil 工具进行开发项目
layout布局,使用px 替换 dp
eg:
< TextView
android:id = " @+id/tv_name "
android:layout_width = " 1080px"
android:layout_height = " 114px"
android:textSize="43px"
/>
对应java文件
void scaleTextView(){
ScreenUtil.scale(findViewById(R.id.tv_name));
}
图片资源文件
使用android Studio 中提供的 mipmap 和drawable进行管理
mipmap:存放普通的图像资源, 一般的图片资源 放在 mipmap-nodpi目录中;
.9.png的图片需要放在 mipmap-hdpi中
drawable:存放 selector、shape、anim等xml图像文件 方便进行管理.
styles、dimens资源文件
style采用大驼峰命名法,主题可以命名为XXTheme,控件的风格可以命名为XXStyle
dimen采用小驼峰命名法,如所有Activity的titlebar的高度,activity_title_height_dimen
strings和colors资源
string命名格式 XX界面+_XX功能+_str,如 activity_home_welcome_str
color命名格式:color_16进制颜色值,如红色 color_ff0000
assets与raw文件夹规范
- raw 存放大于1MB的资源文件. (如:mp3、mp4等 文件)
- assets 存放小于1MB的资源文件并且使用目录归类存放.(如:html、js、jpeg图等)
manifest清单列表规则
- 权限说明,在使用的该权限上加上注释说明(在哪儿使用) 删除不使用的权限声明
- 实现类名设置,使用.MainActivity通过<manifest>节点的package属性所设定的包名添加到这个简写的名称上
- application节点排序顺序
自定义- activity
- activity-alias
- service
- receiver
- provider
三方声明(如:微信分享,push等)
UI的准确性
通过式样书上提供的UI效果图、标注图进行编码,最后结果必须和式样书上提供的效果图一致。
没做完一个阶段UI编码后,需要根据最新的式样书进行 检查。