zoukankan      html  css  js  c++  java
  • Android软件设计规范---命名规则/代码包设计规则等

    如果你将源码作为产品发布,就需要确认它是否被很好地打包并且清晰无误,一如你已构建的其他任何产品。

    作为软件设计师,代码即是产品;不仅需要实现功能,还需有“优美、大方”的外表。

    标识符命名法,标识符命名法最主要有4种:

    1、驼峰(Camel)命名法:又称小驼峰命名法,除首单词外,其余所有单词的第一个字母大写。

    2、帕斯卡(pascal)命名法:又称大驼峰命名法,所有单词的第一个字母大写

    3、下划线命名法:单词与单词间用下划线做间隔。

    4、匈牙利命名法:广泛应用于微软编程环境中,在以Pascal命名法的变量前附加小写序列说明该变量的类型。变量的取名方式为:<scope_> + <prefix_> + <qualifier>分别表示:范围前缀、类型前缀、限定词。

    个人觉得标识符命名原则:尽可能的用最少的字符而又能完整的表达标识符的含义。

    缩写原则,比较常见的有3种:

    1. 较短的单词可去掉“元音”形成缩写;

    2. 较长的单词可取单词的头几个字母形成缩写;

    3. 使用约定俗成的缩写方式;

    如:

    average  --> avg  background --> bg  buffer --> buf  control --> ctrl

    delete --> del  document --> doc  error --> err  escape --> esc

    increment --> inc  infomation --> info  image --> img  initial --> init

    internationalization --> i18N  length --> len  library --> lib  message --> msg

    password --> pwd  position --> pos  server --> srv  string --> str  temp --> tmp

    window--> wnd/win  context --> ctx  configuration --> cfg  compare --> cmp

    clock --> clk  clear --> clr  device --> dev  disable --> dis

    display --> disp  enable --> en  function --> func  maximum --> max

    minimun --> min  parameter --> param

    用正确的反义词组命名具有互斥意义的变量或相反动作的方法:

    add/remove  begin/end  create/destroy  insert/delete

    first/last  get/set  increment/decrement  put/get

    add/delete  lock/unlock  open/close  min/max

    start/stop  next/previous  source/target  show/hide

    send/receive  source/destination

    包命名规范

    采用反域名命名规则,全部使用小写字母,一级和二级包名固定为:com.james;三级包名根据应用进行命名,如:factorytest...四级包名为模块名或层级名。

    工程中的Java文件分包:

    com.james.adapter:Adapter类

    com.james.domain:实体类,对象类

    com.james.bean:元素类

    com.james.utils:工具类

    com.james.ui:视图类

    com.james.activity:页面用到的Activity类

    com.james.base:Android应用中使用到的基类

    com.james.db:数据库操作类

    com.james.view:自定义的View类

    com.james.service:服务类

    com.james.broadcast:广播类

    com.james.constant: 常量字段类

    com.james.widget: UI类

    com.james.activity: Activity类

    类(文件)、接口(文件)、方法的命名规范

    类命名采用名词,首字母大写,避免使用单词的缩写(除非是总所周知的)--- Class Person

    activity类:以Activity为后缀标识,如WelcomActivity欢迎页面;

    Adapter类:以Adapter为后缀标识,如NewDetailAdapter新闻详情适配器;Adapter文件命名规范:负责提供数据,为数据适配器。每个类命名为:界面名+Adapter,如MainItemAdapter

    Tools或Manager类:常用的工具或管理类,如ThreadPoolManager类,LogTools日志工具类;

    DBHelpter类:数据库类,如NewDBHelper类,新闻数据库类;

    Service类:服务类,如TimeService类,时间服务类;

    ContentProvider类:以Provider为后缀标识,内容提供类;

    基类:以Base开头,如BaseActivity,BaseFragment类;

    接口命名采用形容词或副词,首字母同样大写,多以-able或-ible结尾 --- Interface Runnable

    接口名前面需要加上I,以表明此名字为接口。

    对于回调接口:实现Observer模式的接口,回调接口名称以Observer结尾;与Android相关的接口以Listener结尾;从NDK回调回Java的代码函数可以Callback结尾。

    方法名采用动词和名词的组合形式,第一个单词一般是动词,采用匈牙利式的命名规范;若方法返回或设置成员变量的值,使用 getXxx()、setXxx();若返回的是boolean类型的值,一般采用is作为前缀 --- isCancel isRunning

    initXxx():初始化相关的方法,使用init为前缀标识,如初始化布局方法initView();

    isXxx()或checkXxx():该方法返回值为boolean;

    getXxx():返回某个值得方法;

    processXxx():对数据进行处理的方法;

    saveXxx():与保存数据相关的方法;

    变量命名规范

    首字母小写,其他单词首字母大写,采用匈牙利式变量命名法 --- int indexCount;

    尽量使用短而且有意义的单词(避免使用缩写) --- boolean isThreadStop;

    单字符的变量名一般只用于生命期非常短暂的变量 --- int i, k;

    如果变量是集合,则变量名用复数 --- int[] numbers;

    类内部的属性变量一般加前缀m,后面跟上变量属性和功能属性 --- Button mBtnStart;

    非公有、非静态的变量以m开头;静态变量以s开头;其他变量以小写字母开头。

    所有常量名均大写,使用“_”间隔 --- int MAX_NUMBER;

    与布局相关的控件变量命名规范

    在为Android中的布局、控件的变量命名时经常会使用到一些缩写,常见缩写如下:

    Llay --> LinearLayout

    Rlay --> RelativeLayout

    Tlay --> TableLayout

    Sv --> ScrollView

    Btn --> Button

    Iv --> ImageView

    Tv --> TextView

    Et --> EditText

    Mp --> MapView

    Cb --> CheckBox

    Rg --> RadioGroup

    Rb --> RadioButton

    Sp --> Spinner

    Gv --> GridView

    Lv –> ListView

    类中的控件变量名必须与.xml布局id保持一致。

    若控件变量为类的字段,以m开头;

    控件变量名命名规则:类型+功能。如:mBtnBeginTest...

    对象类变在方法体结束后,手动设置为null,以利于资源回收。

    不要使用原义数字或原义字符串,而是使用命名常量,以便于维护。如NUM_DAYS_IN_WEEK

    xml文件命名规范

    res/layout文件夹下的.xml文件,统一用小写和下划线“_”组合命名 --> 模块名_功能名.xml

    res/drawable文件中的资源:统一用小写和下划线“_”组合命名 --> 待使用文件名_逻辑名称,main_default.png

    UI类文件命名规范:显示每个UI界面,每个类命名为:XxxActivity;同时界面类名和相应的.xml文件相同。如:Login.xml对应的类名为LoginActivity。

    .xml布局文件全部采用小写,使用下划线命名;

    adapter的子布局:功能模块_item.xml,如:main_item.xml

    资源文件命名规范

    资源文件(drawable文件夹下的文件),全部小写,采用下滑线的形式命名。

    btn_功能_说明:为按键命名

    bg_功能_说明:为背景命名

    def_功能_说明:为默认的资源文件命名

    icon_功能_说明:为图标命名

    命名后缀:

    select:图片状态,代表选中状态

    unselect:图标状态,代表未选中状态

    ...

    .xml布局文件中控件id命名规范

    view缩写_模块名称_view的逻辑名称

    首个单词为控件类型的缩写,其后为.xml文件的文件名,最后为控件功能名 ---> iv_login_logo

    Android应用程序中常量定义

    类中定义一些常量,如字符串常量或字符串常量,要定义为全局变量。

    public static final int MENU_ABOUT= 0;

    字符串常量可以定义在/res/values/strings.xml中,字符串名称的首字母小写,单词之间用“_”分割,前者为.xml文件名(用途),后者为其功能。

    .xml文件中的尺寸参数定义在/res/values/dimens.xml文件中,首字母小写,单词之间用“_”间隔;首个单词为此控件所属xml文件名,其二为控件id,其三为控件属性。

    代码注释

    源代码中尽量避免连续多行,应根据功能使用空行把代码适当地分段,代码段功能尽量清晰;如不能在30秒内理解代码功能,应为之添加注释予以说明。

    源程序中要有适当的注释。

    注释有助于裂解代码,有效的注释是指在代码的功能、意图层次上进行注释,提供有用的、额外的信息,而不是代码表面意义的简单重复。

    包含在“{}”中代码块的结束处要进行注释,便于阅读。特别是多分支、多重嵌套的条件语句或循环语句。对分支语句(条件分支、循环语句)必须编写注释。

    代码格式

    一般禁止使用制表符,必须使用空格进行缩进。一个制表符使用四个空格替代。

    不同逻辑程序块之间要使用空行分割。空行起着分割程序段落的作用,适当的空行可以使程序的布局更加清晰。

    源代码严格遵循一致的缩进规则。

    错误处理规范

    Log的使用规范:

    项目中使用自定义的Log输出函数,此函数的参数与Android的Log函数一致,可以根据常量控制是使用标准Log输出,还是写入到文件。

    与之对应的条件编译:

    为了使得最终编译的release版本不包含有Log信息,一般使用以下的做法:先定义独立的DebugFlag类:

    在需要输出Log的时候,使用如下方式:

    因为所定义的常量都是final类型的,若把这些常量设置为false,则编译器会优化,移除与输出Log相关的代码。

    Android项目命名规范

    一般是自己懂得严格命名规范对程序员的意义,能够参考Google Android SDK等优秀开源库的命名规范或者其他;此外在参与开发时,需要遵循统一命名规范,还需要对统一的规范加以说明。总之,需要做方面的工作:其一、养成遵循严格的命名规范的习惯;其二、以注释的形式统一说明自己或团队的命名规范。以下对我了解到的命名规范释,以后会在编程过程中逐步养成习惯,并延续这些习惯。

    1.标识符命名法和英文缩写规范

    标识符命名法和英文缩写规则是整个Android项目命名规范的基础,而灵活使用英文中的各类词性,比如:名词、动词、形容词和副词等等,都能够为程序员带来更多的可用信息,而不至于拿到一个控件或资源后猜测不出有什么用途。

    1.1.标识符命名法

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

    其一:驼峰命名法,除首单词外,其余所有单词的第一个字母大写;

    其二:帕斯卡命名法,所有单词的第一个字母大写;

    其三:下划线命名法,单词与单词之间用下划线做间隔;

    其四:匈牙利命名法,应用于微软编程环境中,变量取名方式:<name_scope_>+<type_prefix_>+<qualifier>分别表示范围前缀、类型前缀和变量限定词。

    标识符命名法实例说明:

    1.2.英文缩写

    英文缩写原则:

    其一:较短的单词可通过去掉“元音”形成缩写;

    其二:较长的单词可取单词的头几个字母形成缩写;

    其三:可以使用约定俗成的英文单词缩写。

    常见英文缩写实例说明:

    2.命名规范

    2.1.包命名规范——Package

    包名:采用反域名命名规则,全部使用小写字母。一级包名为com,二级包名为groupname(可以是公司或个人命名取的名词),三级包名根据应用程序名来取名,四级包名为模块名或层级名。比如:com.itheima.myapplicationname,表示itheima机构写的应用程序包名。

    包名中涉及到的单词均使用英文名词。

    包名命名规则举例:

    com.xxx.xxx.activity:页面用到的Activity类,面向于用户界面层;

    com.xxx.xxx.base:页面中每个Activity类共享的数据(基础共享的类);

    com.xxx.xxx.adapter:页面用到的Adapter类;

    com.xxx.xxx.tools/utils:公共工具方法类;

    com.xxx.xxx.bean/entity/domain:元素类,抽取出的JavaBean;

    com.xxx.xxx.db:数据库操作类;

    com.xxx.xxx.view/ui:自定义的View类;

    com.xxx.xxx.service:Service服务;

    com.xxx.xxx.broadcast:Broadcast服务;

    2.2.类名规范——Class

    类名必须是名词,常采用帕斯卡命名规则(每个单词的首字母都必须大写),尽量避免缩写;

    除非是约定俗成的名称,类名称中包含单词缩写的每个字母均应大写或者是首字母大写,例如:URL、HTML、HTTP等。

    类名规范举例说明:

    Activity类:WelcomeActivity、CourseActivity等;

    Adapter类:NewDetailAdatper等;

    公共方法类:ThreadPoolManager、LogTools等;

    数据库类:NewDBHelper等;

    Service类:TimeService等;

    BroadcastReceiver类:TimeBroadcastReceiver等;

    2.3.接口规范——Interface

    接口命名规范和类规范一样采用帕斯卡命名规范,多以-able或-ible结尾(形容词或者副词),用以表示具备的一种功能,如Runnable、Accessible等。

    2.4.方法规范——method

    常见于动词或者动名词,采用驼峰命名法,如onCreate()等。

    例如:

    initXxx():初始化相关方法,使用init-作为前缀,例如:初始化布局initView();

    isXxx():isXxxx()或者checkXxx()返回值为指定类型,使用is-或者check-为前缀;

    getXxx():返回某种类型的值,使用get-为前缀;

    processXxx():对数据进行处理,以process-为前缀;

    displayXxx():弹出提示框或提示信息,以display-为前缀;

    saveXxx():保存数据相关的方法,以save-为前缀;

    resetXxx():对数据重置,或者是界面重置,使用reset-为前缀;

    clearXxx():清除操作相关,使用clear-为前缀;

    drawXxx():绘制数据或效果相关,使用draw-为前缀。

    2.5.变量——variety

    Android中变量的命名都采用驼峰命名规范,常见于名词。

    2.5.1.普通变量命名规范

    在需要表示一组变量的情况中,结尾处使用统一的量词,可以创建更加统一的变量,比如:

    _First表示一组变量中的第一个;

    _Last表示一组变量中的最后一个;

    _Next表示一组变量中的下一个;

    _Pre表示一组变量中的上一个;

    _Cur表示一组变量中的当前变量;

    2.5.2.控件变量命名规范

    控件变量采用驼峰命名法,且类中的控件名称必须和.xml布局文件中的id保持一致;

    此外,如果该变量是全局的,应该在其之前加上m,一般遵循:控件类型_功能的模式,例如:mTvVersion表示与具有Version功能的TextView控件相对应的全局变量名。

    控件变量位于某个.xml文件对应的.java文件中,该Java文件的内容以及命名内容输出了详细的关于控件执行的逻辑信息,在对控件命名时只需要给出控件的类型及其功能即可,业务逻辑可以省略。

    2.6.常量——CONSTANT

    常量全部用大写,采用下划线命名法,常使用名词。

    比如,使用符号常量值代替字面值,将有意义的信息带给程序员。

    MIN_WIDTH表示最小的宽度值;

    RESULT_PARSE_JSON_EXCEPTION;

    RESULT_SUCCESS;

    RESULT_NETWORK_EXCEPTION;

    RESULT_NO_DATA;

    代码中不允许出现直接硬编码的字面常量,如果是控件上显示的文本,必须放在/res/values/string.xml资源文件中;如果是代码中用到的常量字符串,必须定义成public static final String类型的常量值。

    在Activit之间传递的参数,intent.putExtra(key, value)使用的key值也应该统一定义为静态常量,不能直接硬编码在代码中。

    2.7.资源文件及其控件命名规范——resource&&id

    资源文件主要指存放在/res目录下的文件,其命名全部采用小写,用下划线命名法。

    2.7.1.Layout资源文件

    Layout资源文件有多种,每种文件的命名规范均使用文件功能开头,如activity-、fragment-等。

    activity资源文件:activity_description1_description2.xml;

    fragment资源文件:fragment_description1_description2.xml;

    drawable资源文件:controlName_description1_description2_selector.xml,其中controlName表示该资源要用在什么类型的控件上,例如:如果是按键的图片切换,则使用button_bg_sendmessage_selector.xml;selector表示该资源的形式,还比如:shape等。

    颜色值的命名:color_description以color为前缀,description既可以是该颜色的功能描述,也可以是具体的颜色。例如:color_white、color_grey、color_button_pressed等。

    2.7.2.控件的ID命名规范

    参考模式:业务逻辑_控件类型_功能。

    例如:splash_tv_version:表示该控件是使用splash业务逻辑中具有版本控制功能的TextView;user_btn_register表示该控件是使用在user业务中具有register功能的Button。

    此外需要注意的是:.xml文件中的控件ID必须和.java文件中对应的控件对象名保持一致。

    3.优秀资源参考——Google

    Google在Android系统开发时使用的是什么命名规范?

  • 相关阅读:
    jquery中 append 和appendto的区别
    vb的property 和event
    VB 基础语法以及教学视频
    outlook 2007 IMAP设置和配置
    浏览器文档播放Shockwave Flash 插件问题
    VB execl文件后台代码,基础语法
    VB中后台打开Excel文件实现代码
    excel文件后台代码
    DataTable中执行DataTable.Select("条件"),
    多个不同的表合并到一个datatable中,repeater在绑定datatable
  • 原文地址:https://www.cnblogs.com/CVstyle/p/6344705.html
Copyright © 2011-2022 走看看