Android的编码规范
一、Android编码规范
1、学会使用string.xml文件
在我看来,当一个文本信息出现的次数大于一次的时候就必须要使用string.xml
比如一个保存按钮 , 不规范写法:

<Button
android:id="@+id/editinfo_btn_save"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="保存"
/>

这里给它的文本内容设置为"保存",那么一个app中所有的保存按钮都这样写。当有一天要修改需求了,要求把“保存”文字改成“提交”,那么我们只能去一个个布局文件中修改,
岂不浪费大量时间又可能会存在漏掉修改的情况。
规范写法:

<Button
android:id="@+id/editinfo_btn_save"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/save"
/>

而在string.xml文件中:
<string name="save">保存</string>
这种写法,往后需要修改,只需要在string.xml文件中修改一行代码 便实现了整个APP的该文本内容修改。
2、学会使用color.xml ,dimens.xml文件的使用
同string.xml使用一致,同学们应该都懂的,切勿因为一时的懒,导致后期的迭代费时费力。
3、团队协同确定一套标准Activity的onCreate()方法中代码执行流程
其实刚接触Android的时候,我的不规范代码是这样的:

private Button scan; //扫描按钮
private Button create; //创建按钮
private ArrayList<Object> datas; //数据源
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
create = (Button) findViewById(R.id.create);
scan = (Button) findViewById(R.id.scan);
scan.setOnClickListener(this);
create.setOnClickListener(this);
datas = new ArrayList<>();
datas.add(new Integer(1));
datas.add(new Integer(2));
datas.add(new Integer(3));
datas.add(new Integer(4));
}

什么都不管,所有的操作代码都写在onCreate()方法中,包括find控件。设置监听事件,加载数据源等等。
可以看到现在就2个控件一个数据源,代码就这么多了,如果一个界面有10多个控件呢,那onCreate()方法中的代码量就成倍数的多起来了。
所以所有的Activity都要设定一个统一的规范。
我们都知道,一个Activity中有基本都有的操作:
①、初始化变量
②、初始化控件
③、设置监听事件
④、加载网络数据并显示
那么就可以将以上的代码分门别类的放在这几个方法中
比如一段规范代码:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button btn_scan; //扫描按钮
private Button btn_create; //创建按钮
private ArrayList<Object> datas; //数据源
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initVariables();
initView();
initEvent();
loadData();
}
//初始化变量,比如 上一个Activity传来的Intent的数据 本Activity中一些标记变量等
private void initVariables() {
}
//加载数据源
private void loadData() {
}
//注册监听事件
private void initEvent() {
btn_scan.setOnClickListener(this);
btn_create.setOnClickListener(this);
}
//初始化控件
private void initView() {
btn_create = (Button) findViewById(R.id.create);
btn_scan = (Button) findViewById(R.id.scan);
}
//设置点击事件
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_scan:
//扫描二维码
startActivity(new Intent(this,ScanActivity.class));
break;
case R.id.btn_create:
//生成二维码
startActivity(new Intent(this,CreateActivity.class));
break;
}
}
}

可以看到,onCreate()中就那么几个方法了,我们需要找问题的时候在相应的方法中去找即可,既方便又清晰。
其实这种操作我们可以写一个BaseActivity作为它的的抽象方法,然后让Activity继承这个BaseActivity基类重写方法即可,涉及到架构,这个往后再说。
4、团队协同确定一种控件的点击事件OnClickListener()
Android给我们提供5种给控件设置OnClick的方法,个人觉得项目中用的最多的就是
①、参数this 然后Activity 实现 View.OnClickListener接口 重写 onClick()方法
btn_create.setOnClickListener(this);
②、直接参数new OnclickListener()的

btn_create.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});

其他三个方法个人觉得尽量不要用。而这两种方法中第一种 是更好的,因为我们可以通过switch--case 的方法区分不同控件的点击事件,代码更清晰简约。
当然第二种方法也是可以的,但是切记同一个项目中最好只有一种方式,便于后期的维护。

//设置点击事件
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.scan:
//扫描二维码
startActivity(new Intent(this,ScanActivity.class));
break;
case R.id.create:
//生成二维码
startActivity(new Intent(this,CreateActivity.class));
break;
}
}

--------------------------------------------------------------------------------------------------------------------------
二、Android命名规范
命名规范:驼峰法,下划线分割法。
1、Java类文件
①、Activity:以Activity作为后缀,这个相信大家AS给你的都帮你做好了。
②、Adapter: 以Adapter作为后缀
③、ViewHolder: 以ViewHolder作为后缀
④、实体类Entity:以Entity作为后缀
如下,我是以功能模块分包,大神勿喷,个人喜好:

2、xml文件
①、layout.xml
Activity的布局文件以activity_ 开头,AS提供的。
列表项的布局文件listview 以 item_list_开头。
②、控件的命名
缩写,这个看个人了,
我的经验,比如:
LayoutView ---- lv
TextView ---- tv
Button ---- btn
ImageView ---- img
切记,不要使用拼音命名,即使英文这么菜的博主我开发都开着有道词典。
最后,编码一定要写注释,你命名的如果英文不是立马能看懂的,请一定要写上注释。
Android的编码规范的更多相关文章
- Android开发编码规范(自用)
转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! Android开发编码规范 目的及指导原则 目的 统一规范 Eclipse编辑环境 ...
- ym——Android开发编码规范(自用)
转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! Android开发编码规范 目的及指导原则 目的 统一规范 Eclipse编辑环境下J ...
- 【安全开发】Android安全编码规范
申明:本文非笔者原创,原文转载自:https://github.com/SecurityPaper/SecurityPaper-web/blob/master/_posts/2.SDL%E8%A7%8 ...
- 浅谈Android编码规范及命名规范
前言: 目前工作负责两个医疗APP项目的开发,同时使用LeanCloud进行云端配合开发,完全单挑. 现大框架已经完成,正在进行细节模块上的开发 抽空总结一下Android项目的开发规范:1.编码规范 ...
- 第四章 android 命名规范和编码规范
书里面讲的比较常见,单个人也是有不同的观点: 因为android绝大部分使用java开发的,因此java相关规范适用于android: Google Style: 英文地址:http://google ...
- 《阿里巴巴Android编码规范》阅读纪要(一)
版权声明:本文出自汪磊的博客,转载请务必注明出处. 2月28日阿里巴巴首次公开内部安卓编码规范,试想那么多业务线,开发人员,没有一套规范管理起来是多么麻烦,以下是个人阅读Android基本组件部分过程 ...
- 《阿里巴巴Android编码规范》阅读纪要(二)
版权声明:本文出自汪磊的博客,转载请务必注明出处. 本篇继续上一篇<阿里巴巴Android编码规范>阅读纪要(一) ,还是建议各位同学有时间完整阅读一下<阿里巴巴Android编码规 ...
- 最全面的 Android 编码规范指南
最全面的 Android 编码规范指南 本文word文档下载地址:http://pan.baidu.com/s/1bXT75O 1. 前言 这份文档参考了 Google Java 编程风格规范和 Go ...
- 【转】Android编码规范建议18条
转自:http://www.chinaz.com/design/2015/0908/443732.shtml Android编码规范建议18条 适合手机app设计师和android 工程师阅读. 1. ...
随机推荐
- 【疯狂造轮子-iOS】JSON转Model系列之一
[疯狂造轮子-iOS]JSON转Model系列之一 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 之前一直看别人的源码,虽然对自己提升比较大,但毕竟不是自己写的,很容易遗 ...
- java中的锁
java中有哪些锁 这个问题在我看了一遍<java并发编程>后尽然无法回答,说明自己对于锁的概念了解的不够.于是再次翻看了一下书里的内容,突然有点打开脑门的感觉.看来确实是要学习的最好方式 ...
- linux基础学习笔记
我用的是centOS7.0版本的系统.linux的shell终端窗口类似于wind的command窗口 shell命令提示符格式:用户名@主机名:目录名 提示符 @前面的是已登录的用户名,@之后的为计 ...
- HashMap与TreeMap源码分析
1. 引言 在红黑树--算法导论(15)中学习了红黑树的原理.本来打算自己来试着实现一下,然而在看了JDK(1.8.0)TreeMap的源码后恍然发现原来它就是利用红黑树实现的(很惭愧学了Ja ...
- 谈谈一些有趣的CSS题目(七)-- 消失的边界线问题
开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...
- 深入理解 Java G1 垃圾收集器--转
原文地址:http://blog.jobbole.com/109170/?utm_source=hao.jobbole.com&utm_medium=relatedArticle 本文首先简单 ...
- MySQL 系列(四)主从复制、备份恢复方案生产环境实战
第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...
- 微信开发 :WeixinPayInfoCollection尚未注册Mch 问题解决
在使用开源项目 SENPARC.WEIXIN SDK 调用微信支付接口的时候出现了WeixinPayInfoCollection尚未注册Mch,这个问题. 最后地解决方案是: 我这个傻逼忘了在全局Gl ...
- iOS之绘制虚线
/* ** lineFrame: 虚线的 frame ** length: 虚线中短线的宽度 ** spacing: 虚线中短线之间的间距 ** co ...
- 项目持续集成环境(jenkins + SVN + maven + tomcat)
整体流程 每次SVN上代码有变动,触发自动构建动作,并部署到服务器的tomcat上,具体流程: 1.SVN上提交代码修改 2.maven执行Goals 3.将web工程打成war包 4.关闭服务器的t ...