编制程序命名标准,安卓开垦标准
分类:计算机编程

  王小明,他的前辈料定有姓王的,彭河村举村乡不就有家王姓人家啊,大概正是那家的娃娃,贰个走失的娃子就打响的回村了。

安卓开垦标准(updating卡塔尔国

  命名标准就不啻给人起名相像,从名字中传达出风姿浪漫部分消息,举例效率域、类型,能够起到见名知义的效能,在开荒的时候,有个卓越的命名标准能够进级广大的开荒功能。特别是团伙开发的时候,每种人的命名标准区别,在调用或保卫安全的时候,还要花时间来揣摩小编成立类或字段的意图。

摘要

  • 1 前言
  • 2 AS规范
  • 3 命名标准
  • 4 财富文件标准
  • 5 版本统大器晚成标准
  • 6 第三方库标准
  • 7 注释标准
  • 8 测验规范
  • 9 RN规范
  • 10 别的的部分正式
  • 命名空间:使用格式<Company>.<Compinent>,如,Weimei.Study,那样规范重大是为着在援引了第三方库的时候防止命名空间重名,形成编码是的歪曲;
  • 类、接口、方法及品质:使用Pascal命名法则,如,GetDescript;
  • 变量:使用Camel命名准绳,如,personCount;
  • 常量:全体大写,单词之间用下划线“_”隔开,如,GROW_UP_AGE。

    namespace Weimei.Study
    {
    
      class Person 
        {
            public const int GROW_UP_AGE = 18;
            private string _name;
            public string Name;
            { 
                 get{ return _name;}
                 set{ _name = value;}
            }
            public int Age { get; set; }
        }
    
        interface IPersonService
        {
            string GetDescript();
        }
    }
    

     

1 前言

为了方便项目维护以致标准支出,推动成员之间Code Review的频率,故建议以下开荒标准,如有越来越好建议,迎接到GitHub提issue,原作地址: 安卓开拓标准(updating卡塔尔(قطر‎

 

2 AS规范

工欲善其事,磨刀不误砍柴工。

  1. 用尽全力使用新型版的IDE实行支付;
  2. 编码格式统风姿罗曼蒂克为UTF-8
  3. 编辑完.java, .xml等文件后自然要格式化(缩进对齐与AS暗中同意风度翩翩致就能够);
  4. 去除多余的import,减少警示现身,可接受AS的Optimize Imports快捷键;
  5. AS常用支出插件能够参照这里~AS常用支出插件

  使用前缀或后缀作为标记,区分差异的效能或项目:

3 命名标准

代码中的命名严禁使用拼音与意大利语混合的方法,更不容许直接采纳中文的法子。正确的越南语拼写和语法能够让阅读者易于明白,防止歧义。注意,固然纯拼音命有名的模特式也要制止选用。但 alibaba, taobao, youku, hangzhou 等国际通用的名号,可视同German。

  • 接口:使用假名”I“作为前缀;
  • 静态变量:使用“s_”作为前缀;
  • 实业变量:使用“m_”作为前缀;
  • 分子变量:使用“_”作为前缀。

    namespace Weimei.Study
    {
        class Program
        {
            static void Main(string[] args)
            {
                Person m_person = new Person();
                m_person.Name = "王小明";
                m_person.Age = 12;
                IPersonService m_ps = new PersonService(m_person);
                string result = m_ps.GetDescript();
    
                Console.WriteLine(result);
                Console.ReadLine();
            }
        }
    
        class Person
        {
            public const int GROW_UP_AGE = 18;//成年年龄
            private string _name;
            public string Name
            { 
                 get{ return _name;}
                 set{ _name = value;}
            }
            public int Age { get; set; }
        }
    
        interface IPersonService
        {
            string GetDescript();
        }
    
        class PersonService : IPersonService
        {
            Person _m_person;
    
            public PersonService(Person m_person) 
            {
                _m_person = m_person;
            }
            public string GetDescript()
            {
                string desc = "未成年";
                if (_m_person.Age >= Person.GROW_UP_AGE) 
                {
                    desc = "已成年";
                }
    
                return _m_person.Name   desc;
            }
        }
    }
    

     注意事项:

  • 在起名字时,不要大肆起,比方变量int a,别的人要精通那几个变量是干什么用的还要看上边包车型大巴代码。固然变量使用来计数的,则应起名字为xxCount;

  • 始建类时绝不与内置类名相近,以防混淆;
  • 相符采用前缀和后缀,反之会多此一举。

3.1 包名

包名全体大写,一连的单词只是简简单单地连接起来,不选择下划线。

运用反域名命名法则,全体采纳小写字母。一级包名是第一级域名,平时为com, edu, gov, net, org等,二级包名称叫铺面名,三级包名依照使用进行命名,四级包名字为模块名或层级名。

包名 此包中包含
com.xx.应用名称缩写.activity 用户界面中所有的Activity类
com.xx.应用名称缩写.fragment 界面中所有的Fragment类
com.xx.应用名称缩写.base 基础共享的类
com.xx.应用名称缩写.adapter 页面用到的Adapter类 (适配器的类)
com.xx.应用名称缩写.view 自定义的View类
com.xx.应用名称缩写.util 此包中包含:公共工具方法类(util模块名)
com.xx.应用名称缩写.bean 下面可分:vo、po、dto 此包中包含:JavaBean类
com.xx.应用名称缩写.model 此包中包含:模型类
com.xx.应用名称缩写.db 数据库操作类
com.xx.应用名称缩写.view (或者 com.xx.应用名称缩写.widget ) 自定义的View类等
com.xx.应用名称缩写.service Service服务
com.xx.应用名称缩写.receiver BroadcastReceiver服务
com.xx.应用名称缩写.config 所有的配置相关的类

专一:假若项目采纳MVP,全数M、V、P收抽出来的接口都放置在对应模块的i包下,全体的达成都停放在相应模块的impl下

 

3.2 类名

类名都是UpperCamelCase作风编写。

类名平常是名词或名词短语,接口名称有的时候可能是形容词或形容词短语。现在还没有曾一定的准绳或有效的约定来命名申明类型。

名词,接受大驼峰命名法,尽量幸免缩写,除非该缩写是领会的, 举例HTML,U奥迪Q3L,若是类名称中带有单词缩写,则单词缩写的每一个字母均应大写。

描述 例如
Activity 类 Activity为后缀标识 欢迎页面类WelcomeActivity
Adapter类 Adapter 为后缀标识 新闻详情适配器 NewDetailAdapter
解析类 Parser为后缀标识 首页解析类HomePosterParser
工具方法类 Utils或Manager为后缀标识(与系统或第三方的Utils区分)或功能 Utils 线程池管理类:ThreadPoolManager日志工具类:LogUtils(Logger也可)打印工具类:PrinterUtils
数据库类 以DBHelper后缀标识 新闻数据库:NewDBHelper
Service类 以Service为后缀标识 时间服务TimeService
BroadcastReceiver类 以Receiver为后缀标识 推送接收JPushReceiver
ContentProvider类 以Provider为后缀标识 ShareProvider
自定义的共享基础类 以Base开头 BaseActivity,BaseFragment

测验类的命名以它要测量试验的类的名称开首,以Test截止。比方:HashTest 或 HashIntegrationTest。

接口(interface):命名法则与类雷同选拔大驼峰命名法,多以able或ible结尾,如
interface Runnable , interface Accessible。

只顾:借使项目接纳MVP,全部Model、View、Presenter的接口都是I为前缀,不加后缀,别的的接口采纳上述命名准绳。

3.3 方法名

办法名都是lowerCamelCase作风编写。

方式名兴味索然是动词或动词短语。

方法 说明
initXX() 初始化相关方法,使用init为前缀标识,如初始化布局initView()
isXX() checkXX() 方法返回值为boolean型的请使用is或check为前缀标识
getXX() 返回某个值的方法,使用get为前缀标识
setXX() 设置某个属性值
handleXX()/processXX() 对数据进行处理的方法
displayXX()/showXX() 弹出提示框和提示信息,使用display/show为前缀标识
updateXX() 更新数据
saveXX() 保存数据
resetXX() 重置数据
clearXX() 清除数据
removeXX() 移除数据或者视图等,如removeView();
drawXX() 绘制数据或效果相关的,使用draw前缀标识

3.4 常量名

常量名命超情势为CONSTANT_CASE,全体字母大写,用下划线分隔单词。那,到底如何算是叁个常量?

每一个常量都以一个静态final字段,但不是有着静态final字段都是常量。在支配一个字段是或不是是多个常量时,思虑它是或不是真的感到疑似一个常量。比方,倘若别的二个该实例的考察状态是可变的,则它大概确定不会是贰个常量。只是永恒不策画改良指标常常是不够的,它要真正一直不改变才干将它示为常量。

// Constants
static final int NUMBER = 5;
static final ImmutableListNAMES = ImmutableList.of("Ed", "Ann");
static final Joiner COMMA_JOINER = Joiner.on(','); // because Joiner is immutable
static final SomeMutableType[] EMPTY_ARRAY = {};
enum SomeEnum { ENUM_CONSTANT }

// Not constants
static String nonFinal = "non-final";
final String nonStatic = "non-static";
static final SetmutableCollection = new HashSet();
static final ImmutableSetmutableElements = ImmutableSet.of(mutable);
static final Logger logger = Logger.getLogger(MyClass.getName());
static final String[] nonEmptyArray = {"these", "can", "change"};

3.5 特别量字段名

十一分量字段名以lowerCamelCase作风的底子上改动为如下风格:基本构造为scopeVariableNameType

scope:范围

非公有,非静态字段命名以m起头。

静态字段命名以s起首。

国有非静态字段命名以p开端。

国有静态字段(全局变量)命名以g起始。

例子:

public class MyClass {
      int mPackagePrivate;  
      private int mPrivate;  
      protected int mProtected;
      private static MyClass sSingleton;  
      public int pField;
      public static int gField;
}

利用1字符前缀来表示功用范围,1个字符的前缀必需小写,前缀后边是由表意性强的三个单词或多个单词组成的名字,何况各种单词的首写字母大写,别的字母小写,那样保险了对变量名能够举行准确的标点。

Type:类型

考虑到Android中央银行使过多UI控件,为制止控件和平日性成员变量混淆以至越来越好达意,全体用来代表控件的积极分子变量统BlackBerry上控件缩写作为后缀(文末附有缩写表)。

对于平时变量平日不加多类型后缀,如若统大器晚成加多类型后缀,请参见文末的缩写表。

用统意气风发的量词通过在结尾处放置一个量词,就可创设越发统风流倜傥的变量,它们更易于明白,也更易于寻觅。

注意:借使项目中使用ButterKnife,则不增多m前缀,以lowerCamelCase风格命名。

比如说,请使用 mCustomerStrFirst 和 mCustomerStrLast,而不用选取mFirstCustomerStr和mLastCustomerStr。

量词列表 量词后缀说明
First 一组变量中的第一个
Last 一组变量中的最后一个
Next 一组变量中的下一个变量
Prev 一组变量中的上一个
Cur 一组变量中的当前变量

说明:

集合增添如下后缀:List、Map、Set
数组增多如下后缀:Arr

专一:全部的VO(值对象)统意气风发行使职业的lowerCamelCase风格编写,全数的DTO(数据传输对象)就根据接口文书档案中定义的字段名编写。

3.6 参数名

参数名以lowerCamelCase风格编写。
参数应该制止用单个字符命名。

3.7 局地变量名

某个变量名以lowerCamelCase作风编写,比起任何品类的名目,局地变量名可以有更加的宽松的缩写。

固然如此缩写越来越宽大,但依然要制止用单字符进行命名,除了一时半刻变量和循环变量。

纵然一些变量是final和不足改革的,也不该把它示为常量,自然也不可能用常量的平整去命名它。

3.8 一时变量

临时变量常常被取名叫i,j,k,m和n,它们日常用于整型;c,d,e,它们平日用来字符型。 如: for (int i = 0; i < len ; i 卡塔尔。

3.9 类型变量名

类型变量可用以下三种风格之后生可畏进行命名:

单个的大写字母,前面能够跟三个数字(如:E, T, X, T2卡塔尔(قطر‎。

以类命超方式(仿效3.2 类名卡塔尔国,后边加个大写的T(如:RequestT, FooBarT卡塔尔国。

更加多还可仿效~AlibabaJava开采手册

4 财富文件标准

4.1 财富构造文件(XML文件(layout结构文件))

全体大写,采取下划线命名法

4.1.1 contentView 命名

必须以任何单词小写,单词间以下划线分割,使用名词或名词词组。

持有Activity或Fragment的contentView必得与其类名对应,对应准则为:

将富有字母都转为小写,将项目和功效沟通(也正是后缀变前缀)。

例如:activity_main.xml

4.1.2 Dialog命名:dialog_描述.xml

例如:dialog_hint.xml

4.1.3 PopupWindow命名:ppw_描述.xml

例如:ppw_info.xml

4.1.4 列表项命名:item_描述.xml

例如:item_city.xml

4.1.5 富含项命名:模块_(位置)描述.xml

例如:activity_main_head.xmlactivity_main_bottom.xml

留意:通用的带有项命名采纳:项目名称缩写_描述.xml

例如:xxxx_title.xml

4.2 财富文件(图片drawable文件夹下)

成套大写,选用下划线命名法,加前缀区分

命超级模特式:可加后缀 _small 表示小图, _big 表示大图,逻辑名称可由八个单词加下划线组成,接收以下法则:

用途_模块名_逻辑名称
用途_模块名_颜色
用途_逻辑名称
用途_颜色

证实:用项也指控件类型(具体见UI控件缩写表)

例如:

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 胭脂红分界线

譬喻有各类模样如按键等除了这些之外如 btn_xx.xml(selector)

名称 功能
btn_xx 按钮图片使用btn_整体效果(selector)
btn_xx_normal 按钮图片使用btn_正常情况效果
btn_xx_pressed 按钮图片使用btn_点击时候效果
btn_xx_focused state_focused聚焦效果
btn_xx_disabled state_enabled (false)不可用效果
btn_xx_checked state_checked选中效果
btn_xx_selected state_selected选中效果
btn_xx_hovered state_hovered悬停效果
btn_xx_checkable state_checkable可选效果
btn_xx_activated state_activated激活的
btn_xx_windowfocused state_window_focused
bg_head 背景图片使用bg_功能_说明
def_search_cell 默认图片使用def_功能_说明
ic_more_help 图标图片使用ic_功能_说明
seg_list_line 具有分隔特征的图片使用seg_功能_说明
sel_ok 选择图标使用sel_功能_说明

注意:使用AndroidStudio的插件SelectorChapek能够长足生成selector,前提是命名要正式。

4.3 动漫文件(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 中间缩小

4.4 values中name命名

4.4.1 colors.xml

colors的name命名使用下划线命名法,在你的colors.xml文本中应当只是映射颜色的名号一个AENVISIONGB值,而从未别的的。不要使用它为差别的按键来定义A汉兰达GB值。

毫不这样做

       #FFFFFF

       #2A91BD

       #5F5F5F

       #939393

       #FFFFFF

       #FF9D2F
       ... 

       #323232

采纳这种格式,你会特别轻便的开头重新定义A库罗德GB值,那使假如急需转移基本色变的很复杂。同时,那几个概念是跟一些遇到关系起来的,如button或者comment, 应该松手八个开关风格中,并不是在color.xml文件中。

相反,这样做

       #FFFFFF

       #DBDBDB

       #939393

       #5F5F5F

       #323232

       #27D34D

       #2A91BD

       #FF9D2F

       #FF432F

向利用设计者这里要这些调色板,名称无需跟"green", "blue", 等等相近。 "brand_primary", "brand_secondary", "brand_negative" 那样的名字也是截然能够选用的。 像那样标准的颜色比较轻易修改或重构,会使利用风度翩翩共动用了稍稍种不一样的颜料变得那三个明晰。 常常二个颇负审美价值的UI来讲,收缩使用颜色的品类是非常关键的。

4.4.2 dimens.xml

像看待colors.xml一样对待dimens.xml文件 与定义颜色调色板相似,你何况也应有定义四个空子间距和字体大小的“调色板”。 叁个好的例证,如下所示:

       22sp

       18sp

       15sp

       12sp

       40dp

       24dp

       14dp

       10dp

       4dp

       60dp

       40dp

       32dp

结构时在写 margins 和 paddings 时,你应该选取spacing_xxxx尺寸格式来构造,并不是像对待String字符串同样间接写值。 那样写会卓殊常有认为,会使组织和转移作风或布局是特别容易。

4.4.3 strings.xml

strings的name命名使用下划线命名法,接纳以下准绳:模块名 逻辑名称

例如:

main_menu_about 主菜单按钮文字
friend_title 基友模块标题栏
friend_dialog_del 基友删除提示
login_check_email 登入验证
dialog_title 弹出框标题
button_ok 确认键
loading 加载文字

4.4.4 styles.xml

差不离每种门类都急需适当的行使style文件,因为对于三个视图来讲有叁个重复的外观是非常不关痛痒的,将持有的外观细节属性(colors, padding, font)放在style文件中。 在利用中对于大相当多文书内容,最起码你应有有三个通用的style文件,例如:

应用到TextView 中:

你恐怕须求为按键控件做形似的事务,不要截至在那。将风流倜傥组有关的和重复android:****的特性放到八个通用的style中。

将二个大的style文件分割成多少个文本, 你能够有四个styles.xml 文件。Android SDK援助其他文件,styles这些文件名称并从未效应,起效果的是在文书 里xml的

正文最先的著我“Blankj”,通过维护合法权利和利益骑士授权品牌馆授权转发。

本文由pc28.am发布于计算机编程,转载请注明出处:编制程序命名标准,安卓开垦标准

上一篇:的异步编程,中执行异步操作 下一篇:没有了
猜你喜欢
热门排行
精彩图文