简明概要  多写注释

一、关于命名规范

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

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

下面就来说说具体该怎么去规范我们的代码了。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. nginx做负载均衡配置文件

    nginx做负载均衡是在反向代理的基础上做的,代码如下: ## Basic reverse proxy server ## ## Apache backend for www.baidu.com ## ...

  2. caffe简易上手指南(一)—— 运行cifar例子

    简介 caffe是一个友好.易于上手的开源深度学习平台,主要用于图像的相关处理,可以支持CNN等多种深度学习网络. 基于caffe,开发者可以方便快速地开发简单的学习网络,用于分类.定位等任务,也可以 ...

  3. dom解析器机制 web基本概念 tomcat

    0 作业[cn.itcast.xml.sax.Demo2]   1)在SAX解析器中,一定要知道每方法何时执行,及SAX解析器会传入的参数含义 1 理解dom解析器机制 1)dom解析和dom4j原理 ...

  4. maven常用插件配置详解

    常用插件配置详解Java代码    <!-- 全局属性配置 --> <properties> <project.build.name>tools</proje ...

  5. UNIX 网络编程第五章读书笔记

    刚看完 UNIX 第五章内容,我想按照自己的方式将自己获得的知识梳理一遍,以便日后查看!先贴上一段简单的 TCP 服务器端代码: #include <sys/socket.h> #incl ...

  6. 函数buf_LRU_block_remove_hashed_page

    /******************************************************************//** Takes a block out of the LRU ...

  7. bzoj1854

    神奇了 朴素的做法不难想,二分图最大匹配(汗,我其实还是想了一会,太弱了) 左边点集为能打的属性值,右边把武器作为一个点 武器和两个属性连边, 然后和superhero那题差不多,顺次找匹配,找不到了 ...

  8. LeetCode Balanced Binary Tree (判断平衡树)

    题意:如题,平衡树是指任意一个节点(除了叶子),其左子树的高度与右子树的高度相差不超过1. 思路:递归解决,但是提供的函数不满足递归的要求啊,我们至少得知道高度,又得返回真假,所以另开个函数解决. / ...

  9. ↗☻【编写可维护的JavaScript #BOOK#】第8章 避免“空比较”

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...

  10. ViewPager 滑动页(二)

    需求:滑动展示页,能够使用本地数据,及获取服务器数据进行刷新操作,并实现页面自动切换: 效果图: 实现分析: 1.目录结构: 代码实现: 1.PosterView.java package com.j ...