一、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的编码规范的更多相关文章

  1. Android开发编码规范(自用)

    转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持!   Android开发编码规范 目的及指导原则 目的 统一规范 Eclipse编辑环境 ...

  2. ym——Android开发编码规范(自用)

    转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! Android开发编码规范 目的及指导原则 目的 统一规范 Eclipse编辑环境下J ...

  3. 【安全开发】Android安全编码规范

    申明:本文非笔者原创,原文转载自:https://github.com/SecurityPaper/SecurityPaper-web/blob/master/_posts/2.SDL%E8%A7%8 ...

  4. 浅谈Android编码规范及命名规范

    前言: 目前工作负责两个医疗APP项目的开发,同时使用LeanCloud进行云端配合开发,完全单挑. 现大框架已经完成,正在进行细节模块上的开发 抽空总结一下Android项目的开发规范:1.编码规范 ...

  5. 第四章 android 命名规范和编码规范

    书里面讲的比较常见,单个人也是有不同的观点: 因为android绝大部分使用java开发的,因此java相关规范适用于android: Google Style: 英文地址:http://google ...

  6. 《阿里巴巴Android编码规范》阅读纪要(一)

    版权声明:本文出自汪磊的博客,转载请务必注明出处. 2月28日阿里巴巴首次公开内部安卓编码规范,试想那么多业务线,开发人员,没有一套规范管理起来是多么麻烦,以下是个人阅读Android基本组件部分过程 ...

  7. 《阿里巴巴Android编码规范》阅读纪要(二)

    版权声明:本文出自汪磊的博客,转载请务必注明出处. 本篇继续上一篇<阿里巴巴Android编码规范>阅读纪要(一) ,还是建议各位同学有时间完整阅读一下<阿里巴巴Android编码规 ...

  8. 最全面的 Android 编码规范指南

    最全面的 Android 编码规范指南 本文word文档下载地址:http://pan.baidu.com/s/1bXT75O 1. 前言 这份文档参考了 Google Java 编程风格规范和 Go ...

  9. 【转】Android编码规范建议18条

    转自:http://www.chinaz.com/design/2015/0908/443732.shtml Android编码规范建议18条 适合手机app设计师和android 工程师阅读. 1. ...

随机推荐

  1. Hadoop 中利用 mapreduce 读写 mysql 数据

    Hadoop 中利用 mapreduce 读写 mysql 数据   有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...

  2. JavaScript中fn()和return fn()

    看博客时,注意到return的重要性 参考:http://www.cnblogs.com/raoyunxiao/p/5644032.html 看似反常的例子: var i = 0; function ...

  3. 如何选择PHP框架?

    PHP是世界上最受欢迎的编程语言之—.最近发布的PHP7令这种服务器的编程语言比以前变得更好,更稳定了. PHP被广泛应用于重大的项目.例如Facebook就是使用PHP来维护和创建它们的内部系统的. ...

  4. Laravel 5.x 请求的生命周期(附源码)

    Laravel最早接触是刚开始实习的时候,那时通过网上的学习资料很快便上手,开发模块接口.后来没有什么深入和总结,但是当我刚开始学Laravel的时候,我对Laravel最大的认识就是,框架除了路由. ...

  5. C#多线程之线程池篇3

    在上一篇C#多线程之线程池篇2中,我们主要学习了线程池和并行度以及如何实现取消选项的相关知识.在这一篇中,我们主要学习如何使用等待句柄和超时.使用计时器和使用BackgroundWorker组件的相关 ...

  6. OpenCV人脸识别LBPH算法源码分析

    1 背景及理论基础 人脸识别是指将一个需要识别的人脸和人脸库中的某个人脸对应起来(类似于指纹识别),目的是完成识别功能,该术语需要和人脸检测进行区分,人脸检测是在一张图片中把人脸定位出来,完成的是搜寻 ...

  7. 【手记】注意BinaryWriter写string的小坑——会在string前加上长度前缀length-prefixed

    之前以为BinaryWriter写string会严格按构造时指定的编码(不指定则是无BOM的UTF8)写入string的二进制,如下面的代码: //将字符串"a"写入流,再拿到流的 ...

  8. Flex 布局教程:语法篇

    作者: 阮一峰 网页布局(layout)是CSS的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便 ...

  9. 【干货分享】流程DEMO-请休假

    流程名: 请假申请  流程相关文件: 流程包.xml WebService业务服务.xml WebService.asmx WebService.cs  流程说明: 流程中集成了webservice服 ...

  10. 【从零开始学BPM,Day4】业务集成

    [课程主题] 主题:5天,一起从零开始学习BPM [课程形式] 1.为期5天的短任务学习 2.每天观看一个视频,视频学习时间自由安排. [第四天课程] 1.课程概要 Step 1 软件下载:H3 BP ...