做安卓开发也有4年多了,也经常看别人写的代码,感觉大家写代码真是风格迥异。包括我自己 ,以前写代码也是很不规范,觉得功能实现了就可以了,现在也在慢慢纠正,经过一段时间的编码, 慢慢改的规范了很多。
代码简洁规范其实非常重要,方便我们查找修改问题,减少维护成本,节省工作交接时间,当然也是体现一个程序员水平的一个标准。水平越高的程序员,代码看起来越简单。逻辑还特别清晰。下面我想把我自己的一些编码上的小小经验和大家说一下
先说一些命名规范
一.工程包命名
工程包名
com. 公司名称简写.应用名称简写(拼音或者英文).activity 放工程的主Activity 以及BaseActivity
com. 公司名称简写.应用名称简写(拼音或者英文).activity.list 在activity下面建一个文件夹list放所有的ListActivity
com. 公司名称简写.应用名称简写(拼音或者英文).adapter 放和主activity对应的adapter 以及通用adapter
com. 公司名称简写.应用名称简写(拼音或者英文).adapter.item 放和listAcitivity对应的Adapter
com. 公司名称简写.应用名称简写(拼音或者英文).bean 放javabean类
com. 公司名称简写.应用名称简写(拼音或者英文).util 放各种工具类 (图片,字符,时间,dalog 等)
com. 公司名称简写.应用名称简写(拼音或者英文).net 放和服务器交互的类
com. 公司名称简写.应用名称简写(拼音或者英文).view 放 自定义view的类
com. 公司名称简写.应用名称简写(拼音或者英文).db 放 本地数据库操作相关的类
当然 上面的公司名称可以换成别的 ,尽量用简写或者英文 比如qq: 就可以写成 com.tencent.qq.activity,大家明白这个意思就好。
二.类文件命名
1. activity
activity 我习惯分为两种考虑, 一种是列表数据的, 第二种是普通的activity 。这么分有个好处就是找这个类的时候方便。当你看到这个界面时列表数据的时候 直接搜索listActivity就能过滤掉一大部分,然后再筛选会简单很多。这个大家从上面我定义的包名中就看出来了。
所以 activity的命名是 : 功能简写 Activity
功能简写 ListActivity
登录:LoginActivity
用户列表:UserListActivity
2. layout xml
全部小写,用_隔开 xml命名 分为几种
主Activity用到的xml : activity_activity名称简写.xml activity_login.xml
include的xml:include_功能简写.xml include_top_search.xml
adapter中用到的xml:item_adapter名称简写.xml item_user_list.xml
dialog用到的xml:dialog_功能简写.xml dialog_show_tips.xml
自定义view用的xml :view_view名称简写.xmlview_header.xml 这个就是共用的view 也可以用common_view名称简写.xml替换
附加:xml中 控件id命名
模块名称_view的逻辑名称_view缩写
用户名EditText : login_username_et
登录确认Button: login_confirm_btn
LayoutView lv RelativeView rv EditText et TextView tv Button btn ImageButton imgBtn ImageView iv CheckBox cbx RadioButton rbtn
其他的类似 不一一列举 这些都不是规定死的 ,大家自己定义,前提能区分开不同的控件并且能让别人看懂。
3.工具类等
工具类功能简写 Util : DialogUtil.java 、 TextUtil.java
三. 图片等资源文件命名
背景图片: bg_功能_说明 bg_login_commit 图标图片: icon_功能_说明 icon_tab_set
功能也可以换为 acvitiy名称简写
共用的图片 前面都加 common
四.程序中变量 常量命名
在说这个之前要给大家补充一下 标识符命名。就是变量和常量名字
我一般就用两种:
1 驼峰(Camel)命名法:又称小驼峰命名法,除首单词外,其余所有单词的第一个字母大写。 protected TextView mWatchCountInfoTv; protected TextView mNicknameTv; protected TextView mLocationTv; protected TextView mVideoTopicTv; protected TextView mVideoTitleTv; 2.下划线命名法:单词与单词间用下划线做间隔。
private static final int MSG_SHOW_GIFT = 20; private static final int MSG_SHOW_EXPRESSION = 21; private static final int MSG_SHOW_RED_PACK = 22; private static final int MSG_SHOW_JOIN_USER = 23;
1. 静态常量
名称都是 功能说明_类别 统一下划线命名法
private static final int MSG_SHOW_GIFT = 20; private static final int MSG_SHOW_EXPRESSION = 21; private static final int MSG_SHOW_RED_PACK = 22; private static final int MSG_SHOW_JOIN_USER = 23;
2.变量
这个分为两种 全局变量 还是 局部变量
全局变量 以m开头,局部变量不用。
全局变量:
protected VideoEntity mCurrentVideo; protected int mShareType; protected MyHandler mHandler; protected int mLikeCount; protected int mCommentCount;
局部变量:
TextView tview = new TextView();
Button button = new Button();
上面已经介绍过 xml中id命名的方法了
所以变量和那个规则基本一致: 功能逻辑名称简写 view 简写
private ImageView mPhoneVerifyIv; private Button mConfirmBtn; private EditText mPhoneNumberEt; private TextView mSelectCountryNameTv; private TextView mSelectCountryCodeTv;
暂时先写这些,后面补上,我写的不是标准规范,大家都可以自己制定一套 适合自己团队用的规范。只要通俗易懂,让别人一眼看上去整个项目不乱就可以。