开发规范,对于初学者可能不会太在意,但真正项目中,规范尤为重要。一个好的开发规范,可以说是一种艺术,不仅仅有利于后期维护,对代码的可读性,美观性都有影响。下面整理了android项目开发相关的规范。个人知识有限,还望大家补充。
命名规范
创建项目时的项目名称:
- 最好是英文,在项目做完签名打包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修饰,用下划线分割。
public static final int STUDENT_NUMBER = 50;
- 如果常量较多,可以写一个Constants类,专门用来存放一些常量。
附张截图:
变量的命名
- 变量要具有实际意义,一看就懂。
比如 :
private boolean isLogin = true; private TextView tvTitle; private ImageView ivPlay;
方法的命名
- 方法名也要具有实际意义。
比如 :
getDataFromSvr()parseData()updatePlayProgress()
注释规范
自己写的一些接口文件,里面的方法一定要写注释。因为接口是给人用,但别人要知道具体是干什么的。
一般开发,只要在方法上面写个注释就行了。
当修改一些源码时,要加注释,格式如:
Added/(Modified/ Deleted) by 开发者姓名 年-月-日;
数据库规范
建库建表建字段,这是所有数据库都有的操作,应该放在一个类中
增删改查的方法,应该放在dao层
增删改查方法写好后,一定要做单元测试,在test包下写方法测试。
其它规范
xml布局文件中,不要出现中文,全部抽取到strings.xml文件中,方便应用国际化。
颜色值也可以不写死,抽取到colors.xml中,方便后期调整。
对于多个相同控件有相同属性的情况,可以将这些相同的属性抽取到styles.xml文件中,使代码既简洁有便于修改。
一些控件的大小可以抽取到dimens.xml文件中,方便后期屏幕适配。
PS:本文整理的规范,有个人主观的因素在其中,或许有的与你们不太一致。接受不同意见~
欢迎大家补充,共同成长~