开发规范

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;

方法名

  1. 驼峰命名法,首字母小写,其它每个单词首字母大小,尽量满足动词在前的原则
  2. 命名有意义,能够传达变量的用途
  3. 属性方法以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前缀标识

变量名

  1. 驼峰命名法,首字母小写,其它每个单词首字母大小
  2. 命名有意义,能够传达变量的用途
  3. i、j、k等只作为小型循环的循环索引变量。
  4. 避免用Flag来命名状态成员变量。
  5. 通过在结尾处放置一个量词,就可创建更加统一的变量,它们更容易理解,也更容易搜索。例如,请使用 strCustomerFirst和strCustomerLast,而不要使用strFirstCustomer和strLastCustomer。常 用的量词后缀有:First(一组变量中的第一个)、Last(一组变量中的最后一个)、Next(一组变量中的下一个变量)、Prev(一组变量中的上 一个)、Cur(一组变量中的当前变量)。

静态变量|常量

  1. 命名有意义,能够传达变量的用途
  2. 静态常量全部大写,单词之间使用_来连接
  3. 静态变量驼峰命名法,首字母小写,其它每个单词首字母大小
public class InputStream {
        private static final int MAX_SKIP_BUFFER_SIZE = 2048;   // 静态常量
        private static String userName;   // 静态变量
}

参数名

  1. 驼峰命名法,首字母小写,其它每个单词首字母大小
  2. 参数名前加下划线_
  3. 命名有意义,能够传达变量的用途

注释

  1. 方法需要整体注释,说明用途,参数,返回
  2. 方法内关键部份需要单行注释

使用标准括号规则

嵌套分支语句

 class MyClass {
    int func() {
        if (something) {
            // ...
        } else if (somethingElse) {
            // ...
        } else {
            // ...
        }
    }
} 

代码块必须使用{}括号进行包裹。

类成员排序

  1. 常量
  2. 字段|变量
  3. 构造函数
  4. 覆盖方法和回调
  5. 公共方法
  6. 受保护的方法(protected)
  7. 私有方法
  8. 内部类或接口

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命名

  1. 小写字母加下划线命名规则
  2. 使用方式"前缀+_主要内容"
控件 前缀缩写
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编码规范

布局文件

  1. 使用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文件夹规范

  1. raw 存放大于1MB的资源文件. (如:mp3、mp4等 文件)
  2. assets 存放小于1MB的资源文件并且使用目录归类存放.(如:html、js、jpeg图等)

manifest清单列表规则

  1. 权限说明,在使用的该权限上加上注释说明(在哪儿使用) 删除不使用的权限声明
  2. 实现类名设置,使用.MainActivity通过<manifest>节点的package属性所设定的包名添加到这个简写的名称上
  3. application节点排序顺序
    自定义
    • activity
    • activity-alias
    • service
    • receiver
    • provider
      三方声明(如:微信分享,push等)

UI的准确性

通过式样书上提供的UI效果图、标注图进行编码,最后结果必须和式样书上提供的效果图一致。

没做完一个阶段UI编码后,需要根据最新的式样书进行 检查。

上一篇 下一篇

猜你喜欢

热点阅读