简明概要  多写注释

一、关于命名规范

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

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

下面就来说说具体该怎么去规范我们的代码了。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. QT的Paint 系统

    下面对于QT的绘制系统做一个简要说明, 这个系统主要由三部分组成,  QPainter, QPaintDevice, QPaintEngine. QPainter 是一个绘制接口类,提供绘制各种面向用 ...

  2. POJ2240——Arbitrage(Floyd算法变形)

    Arbitrage DescriptionArbitrage is the use of discrepancies in currency exchange rates to transform o ...

  3. Retrofit初识

    Retrofit Retrofit是一套RESTful架构的Android(Java)客户端实现,基于注解,提供JSON to POJO(Plain Ordinary Java Object,简单Ja ...

  4. 一步一步制作yaffs/yaffs2根文件系统(四)---构建etc、dev等剩余目录

    开发环境:Ubuntu 12.04 开发板:mini2440  256M NandFlash   64M SDRAM 交叉编译器:arm-linux-gcc 4.4.3点此可下载 BusyBox版本: ...

  5. request对象常用API 获取请求参数的值 request应用 MVC设计模式

    1 request对象常用API   1)表示web浏览器向web服务端的请求   2)url表示访问web应用的完整路径:http://localhost:8080/day06/Demo1     ...

  6. poj1823,3667

    又来练线段树了…… poj1823题意很简单(明显的数据结构题),区间修改和统计最长连续空区间: 有了poj3468的基础,区间修改不是什么问题了,重点是求最长连续空区间:(弱弱的我纠结了好久) 在每 ...

  7. 在Silverlight中的DispatcherTimer的Tick中使用基于事件的异步请求

    需求:在silverlight用户界面上使用计时器定时刷新数据. 在 Silverlight 中的 DispatcherTimer 的 Tick 事件 中使用异步请求数据时,会出现多次请求的问题,以下 ...

  8. ExtJs批量更新

    昨天这个批量更新花了我不少时间,特记下来,省得以后忘记. 批量更新的逻辑是这样的. 获取Store中需要更新的行,把行放入数组,然后再将数组转化为Json字符串,Json字符串传后后台后,解析为实体列 ...

  9. 弹出框页面中使用jquery.validate验证控件

    弹出框页面中使用jquery.validate验证控件有几个问题需要解决: 1,弹出框的提交事件完成后如何关闭弹出框页面? 2,提交不成功如何返回当前页? 3,如果知道验证事件成功? 之前笔者都是JS ...

  10. 流行的MySql版本

    简介 MySQL是历史上最受欢迎的免费开源程序之一.它是成千上万个网站的数据库骨干,并且可以将它(和Linux)作为过去10年里Internet呈指数级增长的一个有力证明. 那么,如果MySQL真的这 ...