android 命名规范

来源:互联网 发布:napa软件 编辑:程序博客网 时间:2024/06/05 17:22

命名规范

创建项目时的项目名称:

  • 最好是英文,在项目做完签名打包apk的时候,省去一些麻烦。(中文也不影响,但最后要改过来,不然不好打包)

包名的组织:

  • 为防止应用程序在手机中安装失败,必须要保证写的项目的包名是唯一的。一般以公司的域名的倒写作为包名的第一部分;第二部分为应用名;第三部分为具体包的模块名。【域名倒写+应用名称+包的具体模块】

  • 举个实际例子:我之前为苏州科技学院做了一个打卡助手的应用。学校域名为www.usts.edu.cn。那包名就可以这样写:cn.edu.usts.cardhelper,当然这只能作为应用全局的包名,为使逻辑清晰,需继续划分各个不同的包,这里有两种划分形式:一种是按功能模块来划分,一种是按android的一些组件来分。后面一种用的多一些。

  • 简单说一下后面一种常用的包名的组织 有 activities,fragments,service,receiver,adapter,domain,utils,db,dao,test等

附一张打卡助手的项目包名组织截图:

这里写图片描述

布局文件命名:

  • 如果布局文件是为activity写的,那么就这样命名:activity_main, activity_splash, activity_login

  • 如果布局文件是为fragment写的,那么就这样命名:fragment_one, fragment_two, fragment_three

  • 如果布局文件是为listview的一个条目写的,那么就这样命名:item_video_list, item_music_list

  • 如果布局文件是单独的一个布局,是写给其它布局用的,比如常见的标题栏的布局,就可以这样命名:layout_title

附一张手机影音的项目布局文件截图:

这里写图片描述

布局文件控件的命名:

  • 可以遵循这样一种原则:控件简写 + 功能 
    如:tv_title 表示显示标题的TextView  iv_play 表示播放功能的ImageView

  • 如果多个布局文件有相同功能的控件,依然可以用上面的原则,但为了便于自己区分,可以这样:简写 + 所处的布局文件 + 功能 
    如:tv_splash_title, tv_main_title 分别表示显示splash页面标题的TextView和显示main页面的标题

资源图片的命名:

  • 可以遵循这样一种原则:所属控件/activity+功能+状态 
    如:btn_play_default,btn_play_pressed,main_tab_query_default,main_tab_query_pressed

  • 当然这里不唯一,只要自己不会忘了当初命名的所遵循的规范即可。

附几张图片资源的命名图:

这里写图片描述 这里写图片描述

资源文件的命名(drawable文件夹下的.xml文件)

  • 该文件夹下,主要放一些选择器相关的xml文件,或者自定义的一些形状,控件样式等。

  • 以选择器为例,习惯这样命名:selector_btn_play

附张截图:

这里写图片描述

常量的命名

  • 要大写,用final修饰,用下划线分割。
<code class="hljs java has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">static</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">final</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> STUDENT_NUMBER = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">50</span>;</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>
  • 如果常量较多,可以写一个Constants类,专门用来存放一些常量。

附张截图:

这里写图片描述

变量的命名

  • 变量要具有实际意义,一看就懂。 
    比如 :
<code class="hljs java has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">boolean</span> isLogin = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">true</span>; <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> TextView tvTitle;   <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> ImageView ivPlay;</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul>

方法的命名

  • 方法名也要具有实际意义。 
    比如 :
<code class="hljs erlang has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-title" style="box-sizing: border-box;">getDataFromSvr</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">()</span><span class="hljs-title" style="box-sizing: border-box;">parseData</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">()</span><span class="hljs-title" style="box-sizing: border-box;">updatePlayProgress</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">()</span></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul>

注释规范

  • 自己写的一些接口文件,里面的方法一定要写注释。因为接口是给人用,但别人要知道具体是干什么的。

  • 一般开发,只要在方法上面写个注释就行了。

  • 当修改一些源码时,要加注释,格式如:

    Added/(Modified/ Deleted) by 开发者姓名 年-月-日;

数据库规范

  • 建库建表建字段,这是所有数据库都有的操作,应该放在一个类中

  • 增删改查的方法,应该放在dao层

  • 增删改查方法写好后,一定要做单元测试,在test包下写方法测试。

其它规范

  • xml布局文件中,不要出现中文,全部抽取到strings.xml文件中,方便应用国际化。

  • 颜色值也可以不写死,抽取到colors.xml中,方便后期调整。

  • 对于多个相同控件有相同属性的情况,可以将这些相同的属性抽取到styles.xml文件中,使代码既简洁有便于修改。

  • 一些控件的大小可以抽取到dimens.xml文件中,方便后期屏幕适配。

0 0
原创粉丝点击