美文网首页
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 命名规范 (提高代码可读性)

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

  • SQL规范总结

    SQL规范总结 遵循一定的规范有助于提高代码的可读性和可移植性,对SQL来说规范中最主要的是命名规范和代码规范,这...

  • Android开发中的优化方案

    一、命名规范 代码规范先从命名规范开始,Android的命名规范主要涉及:Java源代码,xml文件,图片资源。 ...

  • Android编码规范

    Android开发代码规范相关系列文章: Android命名规范 Android编码规范 Android编码规范有...

  • 【go语言学习】编程规范

    学习一门语言,首先要了解该语言的代码编程规范,以提高代码的可读性、规范性。 一、 命名规范 同其他编程语言一样,g...

  • 如何写好一个第三方框架

    提高代码可读性: 命名:命名是一个很重要很关键的环节,好的命名可以提高代码的可读性,差的命名会让人丈二和尚摸不着头...

  • AMD_ CMD

    模块化的价值 最主要的目的解决命名冲突依赖管理 其他价值提高代码可读性代码解耦,提高复用性 通行的JS模块规范主要...

  • SyleCop

    场景 StyleCop可以检查代码中的各类静态编程规范错误,从代码注释、代码布局、可维护性、命名规范、可读性等各个...

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

    android文件众多,根据名称来辨别用途很重要,因此命名要规范 这篇文章可参考:Android 命名规范 (提高...

  • Python命名规范

    命名规范在编写代码中起到很重要的作用,使用命名规范可以更加直观地了解代码所代表的含义,让代码具有有可读性、易写性与...

网友评论

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

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