简明概要  多写注释

一、关于命名规范

对于开发项目来说肯定是要有统一的规范,然而命名规范需要做到哪几点呢?

    答: 首先,不能反人类。 再来就是,要望文而知其意

下面就来说说具体该怎么去规范我们的代码了。How to name?

  1)Java类文件

    i. Activity 命名规范: 以Activity作为后缀, 例如 personActivity

    ii. Adapter命名规范: 以Adapter作为后缀,  例如 personAdapter

    iii. Entity 命名规范: 大多以Entity作为后缀,  例如 personEntity。 值得注意的是,User是全局变量,不算实体,不用这样来命名。

   2)资源文件

     ①layout目录下(都用小写好么)

    i.  页面布局文件:

            以act_ 为前缀,以Activity所在的Packege作为中缀, 以Activity的名称(去掉Activity)作为后缀。

          如: act_person_addcoustomer.xml  表示在Person模块下的AddCustomerActivity对应的Layout布局文件。

    ii. ListView中的item布局文件:

          以item_作为固定前缀,列表项的名称作为后缀。

        如: item_lvuserlist.xml 表示在某个页面下有一个用户列表,控件名为lvUserList对应的item的layout布局文件。

    iii. Dialog布局文件:

          以dlg_作为固定前缀,Dialog的功能名称作为后缀。

        如: dlg_hint.xml  表示什么呢?都知道吧

  ②drawable目录下

    应该遵守以下命名规范:

      i. 对于只在一个页面使用的资源,就以该界面的名称作为前缀

      ii. 对于只在一个模块下多个页面使用的资源,就以该模块的名称作为前缀

      iii. 对于在各个模块、各个页面都有可能使用的资源,例如上导航、下导航,以common作为前缀

3) Java类中控件对象

    控件类型缩写 + 控件的逻辑名称(首字母大写),如登录按钮,可以命名为 btnLogin。

常用控件的缩写
控件 缩写 控件 缩写
LayoutView lv EditText et
RelativeView rv Timepicker tp
TextView tv toggleButton tb
Button btn Progress pb
ImageButton img WdbView wv
ImageView iv RantingBar rb
CheckBox chk Tab tab
RadioButton rb ListView lv
DatePicker dp MapView mv

4) Layout中控件对象

    与Activity中对应的控件名称保持一致。

  如: Button btnLogin = (Button)findViewById(R.id.btnLogin);

5) string.xml中的常量

       如: loginActivity_btnLogin_text

  因为这些值大多在layout中的控件上使用,所以以该常量所在的Activity名称作为前缀,后面接控件名称,再后面就可以自由发挥了。

  另一个中是使用在Java代码中情景,

    若和具体Activity相关,以所在Activity名称作为前缀,和上面的一样;

    若涉及和公共模块和控件相关,就以common_作为前缀。

  更灵活的做法是,将其按照模块拆分为多个strings文件,只要resoures 标签下都是string标签就可以了,编译打包时会自动将同类文件进行合并。

6) 常量命名

  只能包含字母和下划线_, 字母全部大写,单词之间用下划线_隔开 例如: START_TIME

二、关于编码规范

  1) 需要分别类存放各种类

      如:

         |-src

          |---com.example.demo

            |---activity.others

            |---activity.personcenter

            |---adapter

            |---db

       依次还有: engine、 entity、 interfaces、 listener、ui、 utils 。。。

  2) 要怎么使用findViewById 语句?

  3) Layout中的常量,要在资源strings.xml中定义

  4) Layout中所有控件的字体大小,都定义在dimens.xml中

  5) 在Activity中,定义新的生命周期,从而将onCreate方法拆分为以下3部分:

     initVariables: 初始化变量(包括Intent上的数据和Activity内部使用的变量)

     initViews: 加载Layout布局文件,初始化控件

       loadData: 调用MobileAPI

  6) 坚持使用fastJSON自定义实体来作为MobileAPI的数据载体

  7) 页面之间传值,坚持使用Intent携带序列化实体数据的方式。禁止为了省事使用全局变量进行传值的方式。

  8) 为控件添加事件,使用.setOnclickListener();

  9) Activity中不要嵌套内部类,尽量都独立出来

  10)所有Adapter,都放在adapter这个包中; Adapter绑定的数据,一律为ArrayList<自定义可序列化实体>; 在Adapter中使用 ViewHolder实体类。

  11) 实体不要在不同模块间共享,但是可以在同一个模块下的不同页面之间共享。

  12) 为节省内存,请使用ArrayList<自定义实体>, 而不是HashMap

  13) 图片处理,请统一使用第三方组件ImageLoader 或 Fresco 来进行异步加载

  14) 什么时候使用SharedPreference? 对于简单的配置信息,设置页面的各种开关; 而对于复杂的对象,比如说User类,还是要存储到本地文件中为好。

  15) 尽量使用ApplicationContext 代替 Context, 否则会引起内存泄漏。 当然,也不是任何地方 ApplicationContext都可以代替Context,使用不当会导致崩溃。

  16) 数据类型转换一定要进行校验。

  17) 使用常量来代替枚举。    枚举的每一个值只能是一个整数,而没有toString这样的方法,所以不如在类中定义一个字符串常量方便。

          

Android 命名规范和编码规范的更多相关文章

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

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

  2. [旧][Android] 命名规范和编码规范

    备注 原发表于2016.05.07,资料已过时,仅作备份,谨慎参考 前言 本文适用范围:已参加项目开发的人 写这篇文章的目的是为方便地对代码进行管理,让整个团队的代码规范化.这里的部分规定可能和你在其 ...

  3. 《从零开始学Swift》学习笔记(Day 56)——命名规范Swift编码规范之命名规范

    原创文章,欢迎转载.转载请注明:关东升的博客 程序代码中到处都是自己定义的名字,取一个有样并且符合规范的名字非常重要. 命名方法很多,但是比较有名的,广泛接受命名法有: 匈牙利命名,一般只是命名变量, ...

  4. web项目开发 之 前端规范 --- HTML编码规范

    此文严格按照W3C规范和部分实际项目可读性,浏览器加载,性能等众多属性权衡,做出平时前端编码规范文 档.供广大web工作者参考并实施,对维护和项目扩展升级都能省时省力. 转载请注明出处,JS前端实用开 ...

  5. C#命名规则和编码规范

    用Pascal规则来命名属性.方法.事件和类名. public class HelloWorld { public void SayHello(string name) { } } Pascal规则是 ...

  6. Swift— Swift编码规范之命名规范-备

    程序代码中到处都是自己定义的名字,取一个有样并且符合规范的名字非常重要. 命名方法很多,但是比较有名的,广泛接受命名法有: 匈牙利命名,一般只是命名变量,原则是:变量名=类型前缀+描述,如bFoo表示 ...

  7. 《从零開始学Swift》学习笔记(Day 56)—— Swift编码规范之命名规范

    原创文章,欢迎转载.转载请注明:关东升的博客 程序代码中到处都是自定义的名字,取一个有样而且符合规范的名字非常重要. 命名方法非常多,可是比較有名的,广泛接受命名法有: 匈牙利命名,一般仅仅是命名变量 ...

  8. 标准的Java编码规范手册

    编码规范体现出一个开发者的基本素质,良好的编码规范可以提高团队编码的效率,避免很多不必要的问题.今天分享一个标准的Java编码规范给大家,希望对于大家今后的开发工作带来帮助. 编码规范的意义      ...

  9. 建立标准编码规则(四)-C#编码规范分类及实现

    1 现实中的问题 在任何一个公司,每个程序员编写的习惯可能都是不一样的,大到命名空间,小到变量的名字.甚至,我们去github,里面的大牛每个开源的项目的命名规则可能都不一样. 我们通常会遇到下面的问 ...

随机推荐

  1. Mac中编译安装Qt 4.4

    解压下载到的.gz源码:gunzip xxx.tar.gztar xvf xxx.tar, 其实在Mac中可以直接双击解压的.然后定位到解压后的目录下:./configuremakesudo make ...

  2. Android:通过Intent访问一个网页

    Intent(意图)主要是解决Android应用的各项组件之间的通讯. 小实例 package com.example.testopen; import android.app.Activity; i ...

  3. P78、面试题10:二进制中1的个数

    题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数.例如把9表示成二进制1001,有2位是1.因此如果输入9,该函数输出2. 相关题目: 1)用一条语句判断一个整数是不是2的整数次方.一 ...

  4. paip.提升用户体验----gcc c++ JIT-debugging 技术

    paip.提升用户体验----gcc  c++ JIT-debugging 技术 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http ...

  5. A9裸机

    Tiny4412裸机程序之操作ICache 一.首先普及一下什么是Cache 基于程序访问的局限性,在主存和CPU通用寄存器之前设置了一类高速的.容量较小的存储器,把正在执行的指令地址附件的一部分指令 ...

  6. JavaScript DOM高级程序设计2.1创建可重用的对象--我要坚持到底!

    1.对象中包含什么 在javascript中,从函数到字符串实际上都是对象 继承 //创建一个person对象的实例 var penson={}; person.getName=function(){ ...

  7. 【转】Android Service被关闭后自动重启,解决被异常kill 服务

    http://www.kaifajie.cn/android/10182-2.html 每次调用startService(Intent)的时候,都会调用该Service对象的onStartComman ...

  8. Hibernate映射之实体映射<转载>

    实体类与数据库之间存在某种映射关系,Hibernate依据这种映射关系完成数据的存取,因此映射关系的配置在Hibernate中是最关键的.Hibernate支持xml配置文件与@注解配置两种方式.xm ...

  9. string evaluated instead to freemarker.template.SimpleScalar

    [2015-09-06 09:07:32.879] ERROR [6B68DD09CE6FECFE20936CA3C6D560AD:http-bio-8087-exec-8] o.a.s.v.free ...

  10. 分布式存储Memcache替代Session方案

    PHP自带的Session实际是在服务器中为每个客户建立独立的文件存放各自的信息. 在不做处理的情况下,很容易被客户端伪造.并且由于采用文件形式,所以存在着IO 读写的瓶颈.一般当用户在线达到1000 ...