美文网首页
Android 命名规范 (提高代码可读性)

Android 命名规范 (提高代码可读性)

作者: LeoYan_blog | 来源:发表于2017-06-07 11:34 被阅读159次

    转载请注明出处:http://www.jianshu.com/p/76d8bfddec0c

    本文出自 LeoYan 的博客

    本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 LeoYan 即可关注。

    标识符命名法主要有四种:

    1. Camel命名法:又称小驼峰命名法。除首单词外,其余所有单词的第一个字母大写,如:fooBar;
    2. Pascal命名法:又称大驼峰命名法。所有单词的第一个字母大写,如:FooBar;
    3. 下划线命名法:单词与单词间用下划线做间隔,如:foo_bar;
    4. 匈牙利命名法:开头字母用变量类型的缩写,其余部分用变量的英文或英文的缩写,要求单词第一个字母大写。如:int iMyAge; “i”是int类型的缩写;

    安卓App层开发主要是Java语言,所以基本使用除了第四种外的命名方式;

    英文缩写在命名是必须的,遵循下面规则:

    1. 较短的单词可通过去掉“元音”形成缩写,如icon->ic;
    2. 较长的单词可取单词的头几个字母形成缩写,如:average->avg;
    3. 此外还有一些约定成俗的英文单词缩写,如 Internationalization->I18N;
    4. 程序中不要用缩写,除非该缩写是约定俗成的。

    下面为常见的英文单词缩写:

    名称 缩写
    icon ic (主要用在app的图标)
    color cl(主要用于颜色值)
    divider di(主要用于分隔线,不仅包括Listview中的divider,还包括普通布局中的线)
    selector sl(主要用于某一view多种状态,不仅包括Listview中的selector,还包括按钮的selector)
    average avg
    background Bg(主要用于布局和子布局的背景)
    buffer buf
    control ctrl
    delete del
    document doc
    error err
    escape esc
    increment inc
    infomation info
    initial init
    image img
    Internationalization I18N
    length len
    library lib
    message msg
    password pwd
    position pos
    server srv
    string str
    temp tmp
    window wnd(win)

    命名规范:

    包(packages): 采用反域名命名规则,全部使用小写字母。一级包名为地顶级域名如com,二级包名为xx(可以是公司或个人的随便),三级包名根据应用进行命名,四级包名为模块名或层级名;如 com.tinyx.myapp.activities;

    类(classes): 用Pascal命名法,尽量避免缩写,如:MyActivity;缩写是众所周知的,如HTML,URL;类名称中包含单词缩写,则单词缩写的每个字母均应大写,如:PublicHTML,CommonURL。

    接口(interface): 与类一样用Pascal命名法,多以able或ible结尾,多用作表示行为,如Runnable,Accessible;

    方法(methods): 动词或动名词,采用Camel命名法,如:onCreate(), run();下面是一些建议:

    • 初始化相关方法,使用init为前缀标识,如:初始化布局initView();
    • boolean型使用is或check为前缀标识, 如:checkValue()、isValidate();
    • 返回某个值的方法,使用get为前缀标识,如:getName();
    • 数据进行处理相关,尽量使用process为前缀标识,如:processUpdate();
    • 保存数据相关,使用save为前缀标识,如:saveData();
    • 对数据重置的,使用reset前缀标识,如:resetData();
    • 清除数据相关,使用clear前缀标识,如:clearData();
    • 移除某些项目,使用remove前缀标识,如:removeItem();
    • 绘制数据或效果相关的,使用draw前缀标识,如:drawCircle();

    变量(variables): 采用Pascal命名法,建议采用有意义的命名如:firstName, lastName;

    • 模型类变量默认以上规则
    public class User {
        public String name;
        public String phone;
        public int sex; //1,男 2,女
        
        public User() {
            this.name = "myname";
            this.phone = "123“
            this.sex = 0;
        }
    }
    
    
    • 非模型类全局参数建议加上小写m开头;
    public class TestActivity extends Activity{
        private ZoomableImageView mZoomableView;
        private TabLayout mTabLayout;
        private int mItemsCount;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.test_activity);
        }
    }
    

    常量(constants): 全部大写,采用下划线命名法。如下:

    public static final int MAX_ITEMS= 10;
    public static final String TAG = User.class.getSimpleName();
    

    资源文件命名(resources): 采用下划线命名法,全部小写,针对不同资源,建议用下面的命名方法;

    • drawable资源,加前缀命名:前缀功能模块_说明.xml/png/
    说明 命名范例
    图标:建议格式 ic_xxx; ic_appicon.png
    背景:建议格式 bg_xxx; bg_normal_button_default.xml, bg_normal_button_press.xml
    • layout资源文件,前缀命名:类型模块功能_说明.xml,举一些常用的例子如下:
    说明 命名范例
    Activity布局文件 activity_main.xml
    Fragment布局文件 fragment_main.xml
    局部布局View文件 view_main_header.xml, view_main_bottom.xml
    自定义提示对话框 dialog_alert.xml
    列表项等 fragment_user_list_item.xml
    • 动画anim资源文件(anim只有一种资源,所以不必加前缀区分):模块功能动画_方向.xml
    说明 命名范例
    淡入 main_button_fade_in.xml
    淡出 main_button_fade_out.xml
    从下方推入 button_push_down_in.xml
    从下方推出 main_button_push_down_out.xml
    • menu菜单资源文件(menu只有一种资源,所以不必加前缀区分):模块功能说明.xml
    说明 命名范例
    主界面菜单 main_activity.xml
    Fragment界面菜单 user_fragment.xml
    • values资源,这个主要分下面几种资源:

    1、 ids资源,主要存放是界面控件的id值,用下划线小写命名法,前缀方式:前缀模块功能_说明,常用界面控件命名如下:

    说明 命名范例
    布局和子控件(ViewGroup,自定义View) view_main_topnav
    TextView tv_main_title
    Button btn_user_add
    ImageButton imgbtn_user_del
    ImageView img_thumb
    CheckBox cb_sex
    RadioButton rbtn_answer
    EditText et_username
    ToggleButton toggle_funtion
    ProgressBar pb_download
    SeekBar sb_progress
    ProgressBar pb_download
    VideoView vv_course
    WebView wv_download
    RantingBar rb_download
    Spinner sp_cities
    ScollView sv_main
    TextSwitch sp_cities
    ListView/ExpandListView/RecyclerView lv_cities
    MapView mv_location

    2、strings/arrays/dimens资源,用下划线小写命名法,不加任何前后缀,格式:模块功能说明。

    3、attrs/colors/ids的属性和名称使用Camel命名法;styles的属性使用Camel命名法,名称使用Pascal命名法;如下面:

    <!--attrs-->
    <attr name="text" format="string" />
    <attr name="itemIcon" format="reference" />
    <attr name="showToggle" format="boolean" />
    <attr name="showVersion" format="boolean" />
    <style name="Theme.AppCompat.Light.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>
    
    <!--colors-->
    <color name="colorPrimary">#009688</color>
    <color name="colorPrimaryDark">#00796b</color>
    <color name="colorAccent">#cddc39</color>
    
    <!--ids-->
    <item name="tabLayout" type="id"/>
    <item name="viewPager" type="id"/>
    <item name="viewContainer" type="id"/>
    

    关注我的微信公众号,会有优质技术文章推送。

    微信扫一扫下方二维码即可关注:


    公众号

    相关文章

      网友评论

          本文标题:Android 命名规范 (提高代码可读性)

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