美文网首页
Android开发命名规范

Android开发命名规范

作者: Crocutax | 来源:发表于2017-04-24 23:39 被阅读291次

    本文为 Crocutax 原创 , 转载请注明出处 http://www.crocutax.com

    核心原则

    • 见名知意
    • 严格执行命名规范
    • 全局禁用拼音

    分包规范

    包名全部小写,连续的单词只是简单地连接起来,不使用下划线。 采用反域名命名规则,全部使用小写字母。一级包名为com,二级包名为xxx(公司名),三级包名根据应用进行命名,四级包名为模块名或层级名。 例如:com.longke.qq.activity

    com.xxx.activity    Activity类
    com.xxx.service     Service
    com.xxx.receiver    BroadCastReceiver
    com.xxx.provider    ContentProvider
    com.xxx.base        基类
    com.xxx.adapter     ViewPager/RecyclerView等适配器
    com.xxx.util        各种StringUtil,NetUtil,BitmapUtil等工具类 
    com.xxx.view        自定义view/第三方开源控件
    com.xxx.bean        各种实体类,下面可以再细分VO,PO,DTO
    com.xxx.db          数据库操作类
    

    注意:

    • 部分特殊的第三方SDK,比如微信支付,Zxing,讯飞语言等对如果对包位置有特殊要求的,按第三方要求来
    • MyApplication等全局相关的配置类,放在包名目录下

    命名规范

    Activity / Fragment / Adapter / Bean...

    类名由一个或多个单词组成,采用 大驼峰命名法

    同一界面,不同类型的类,前缀必须一样,比如:HomePageActivity,HomePageFragment,HomePageListAdapter...

    Listener

    Listener接口监听事件的命名规范:以On开头Listener作为后缀。
    具体:On+事件描述+Listener

    例如:点击事件:OnClickListener

    对应的调用方法:setOnClickListener()

    常量

    常量命名采用 : 全大写 + 下划线方式例如:

    public static final int LOGIN_FLAG = 1 ;
    

    intent标记的key以INTENT 开头 , 各个单词以_隔开,例如:

    public static final String INTENT_CAR_ID = "intentCarId";
    

    变量

    变量以小驼峰式命名法,不同类型的变量又有不同的命名方式.

    私有成员变量

    必须以"m"开头 + 变量名

    例如:
    private int mThemeId = 0;
    private boolean mIsOpen;
    private List<Strng> mUrlList;
    

    静态成员变量

    必须以"s"开头 + 变量名

    private static boolean sIsOpen = false;
    

    局部变量

    小驼峰命名法

    public String getUserName(){
        String userName = getUserNameFromDB();
        ...
    }
    

    方法

    方法命名规则采用小驼峰命名法例如:

    onCreate() / onResume() / onRun()
    getXX()返回某个值的方法
    initXX() 初始化相关方法,比如初始化布局:initView()
    checkXX()和isXX()方法为boolean值的时候使用is或者check为前缀
    saveXX() 保存数据
    clearXX()和removeXX() 清除数据
    updateXX() 更新数据
    processXX() 对数据进行处理
    dispalyXX() 显示某某信息
    

    对于方法的其他一些规范

    • 方法的参数尽可能不超过4个,多余4个考虑采用builder模式或者JavaBean形式
    • 注意单一职责原则
    • 方法尽量避免返回null,可以考虑抛异常或空数据,比如Collections.emptyList()

    类声明规范

    区块划分

    建议使用注释将源文件分为明显的区块,区块划分如下

    常量声明区
    UI控件成员变量声明区
    普通成员变量声明区
    内部接口声明区
    初始化相关方法区
    事件响应方法区
    普通逻辑方法区
    重载的逻辑方法区
    生命周期回调方法区
    内部类声明区
    

    类成员排列通用规则

    按照发生的先后顺序排列
    常量按照使用先后排列
    UI控件成员变量按照layout文件中的先后顺序排列
    普通成员变量按照使用的先后顺序排列
    方法基本上都按照调用的先后顺序在各自区块中排列
    相关功能作为小区块放在一起(或者作为一个封装体引入)
    重载方法永不分离,当一个类有多个构造函数,或是多个同名方法,这些函数/方法应该按顺序出现在一起,中间不要放进其它函数/方法。
    

    资源文件命名规范

    • Activity对应的布局文件命名:XxxActivity--> activity_xxx.xml,比如MainActivity.java--> activity_main.xml
    • XML中控件命名:控件名界面名作用,例如:tv_homepage_name ,et_login_phone
    • 图片命名,资源文件,控件id命名:activity名称+功能名称(背景bg,按钮bt,图片控件iv等)+自己名称
    • RecyclerView / ListView中的item布局文件命名规范:以item_list作为前缀,以页面名称作为中缀,以列表描述作为后缀。具体:"item_list_"+页面名称+列表描述,例如:item_list_login_users.xml
    • Dialog布局文件命名规范:以dialog作为前缀,如果是通用的dialog则以common作为中缀以功能描述作为后缀。如果是对应页面定制的dialog,以页面描述作为中缀,dialog描述作为后缀。
      具体:

    通用的dialog:dialog+common+功能描述,例如dialog_common_hint.xml

    指定页面的dialog:dialog+页面名称+功能描述,例如dialog_login_pwd_error.xml

    values下文件命名

    strings.xml

    直接以对应的内容的英文单词组合命名.例如:

    <string name="buy_ticket">购票</string>
    <string name="region_list">景区列表</string>
    

    colors.xml

    具体:页面+"_"+描述+颜色名称,例如:
    登录页面登录按钮字体颜色

    <!--登录页面登录按钮字体颜色  -->  
    <color name="login_activity_login_btn_text">#000000</color>
    

    当然还有一些APP主题色,规范为:common_描述 ,例如:

    <!--通用的item字体颜色  -->  
    <color name="common_item_text">#33AACC</color>
    

    dimens.xml文件命名

    <resources>
        <!-- Default screen margins, per the Android Design guidelines. -->
        <dimen name="activity_horizontal_margin">16dp</dimen>
        <dimen name="activity_vertical_margin">16dp</dimen>
    </resources>
    

    drawable目录下资源文件命名规范:

    selector文件

    以selector作为前缀,以某个页面的作为中缀如果是多个页面就以模块名称作为中缀或者是项目通用的就以common作为中缀,以功能描述作为后缀。

    具体:
    selector+页面名称+功能描述
    selector+模块名称+功能描述
    selector+common+功能描述
    
    例如:
    登陆页面的确认按钮:selector_login_confirm_btn.xml(login为页面名称)
    所有支付模块购买的按钮:selector_pay_buy_btn.xml(buy为模块名称)
    所有通用按钮的背景:selector_common_btn_bg.xml
    

    shape图形

    以shape 作为前缀,如果是通用的以common作为中缀,如果是单独页面的以页面名称作为中缀,或者以模块名称作为中缀,以功能描述作为后缀。

    具体形式和selector一样。

    图片资源

    图片资源命名规范 全部小写,采用下划线命名法,加前缀区分 命名模式:可加后缀 _small 表示小图, _big 表示大图,逻辑名称可由多个单词加下划线组成,采用以下规则:

    用途_模块名_逻辑名称
    用途_模块名_颜色
    用途_逻辑名称
    用途_颜色  
    
    icon图片资源以ic开头;
    具体: 前缀+""+页面名称+""+描述 (如果页面和描述一致的则不用重复)
    欢迎页面背景图 bg_welcome.png
    
    登录页面 登录按钮背景  bg_login_btn.png
    
    btn_main_home.png 按键
    
    divider_maket_white.png 分割线
    
    ic_edit.png 图标
    
    bg_main.png 背景
    
    btn_red.png 红色按键
    
    btn_red_big.png 红色大按键
    
    ic_head_small.png 小头像
    
    bg_input.png 输入框背景
    
    divider_white.png 白色分割线
    

    anim目录

    全部小写,采用下划线命名法,加前缀区分。具体动画采用以下规则:

    模块名_逻辑名称
    逻辑名称

    refresh_progress.xml
    market_cart_add.xml
    market_cart_remove.xml
    

    普通的tween动画采用如下命名方式:

    // 前面为动画的类型,后面为方向
    动画命名例子  描述
    fade_in         淡入
    fade_out        淡出
    push_down_in    从下方推入
    push_down_out   从下方推出
    push_left       推向左方
    slide_in_from_top   从头部滑动进入
    zoom_enter      变形进入
    slide_in        滑动进入
    shrink_to_middle    中间缩小
    

    其他注意事项

    • 定义类或者接口 首行留空格,末尾不留;其次每个逻辑分区都要留单行空格(除普通常量定义外)
    • 定义类或者接口变量时,请使用基类或者顶层接口定义变量
    • 自行控制类、接口、及其成员的访问权限,尽量缩小访问权限
    • 类如果不是为扩展而设计的请加final修饰符
    • 遇到switch语句时,酌情考虑将每个case语句拆分成单个函数调用
    • 接口定义不加“I”前缀,实现添加"impl"后缀,如果有必要请提供默认的实现和其它实现 (默认实现:Default+接口名+impl,其它实现 :具体扩展功能 + 接口 + impl)
    • 具有controller功能的类或者接口定义 都以 功能+“manager” 形式定义
    • 所有表示层设计的实体定义形式为 : 功能+“model”

    相关文章

      网友评论

          本文标题:Android开发命名规范

          本文链接:https://www.haomeiwen.com/subject/ynsmzttx.html