Android 编码规范及代码风格

1、常见的命名规范java

    一、Pascal命法:android

        每一个单词的首字母大写。 如:PersonName、SchoolName   web

    二、Camel命名法: app

        第一个单词的首字母小写,其他单词的首字母大写。如:personName、schoolName   框架

    三、匈牙利命名法: ide

        变量名=属性+类型+对象描述。 如:m_intMaxDate函数

            属性:全局变量(g_)、常量(c_)、成员变量(m_)、静态变量(s_)优化

            类型:函数(fn)、句柄(hand)、长整型(long)、布尔(bool)、浮点型(float)、双字(dw)、字符串(str)、双精度浮点(double)、计数(count)、字符(char)、整型(int)、字节(byte)this

            描述:最大(Max)、最小(Min)、初始化(Init)、临时变量(T/Temp)、源对象(Src)、目的对象(Dest)   spa

    四、下划线命名法:

        全部字母均小写,每一个单词间如下划线分割。如:person_name


2、命名规范的运用

    一、包名所有小写 package istg.tolo.common   

    二、文件命名(即类名) Pascal命名

    (1)普通类(Pascal命名法) 

        public class SomeClass{

            public SomeMethod(){}    //构造函数

        }

    (2)自定义属性类(后缀使用Attribute)

        public class BussinessPlugAuthorAttribute extends Attribute{……}

    (3)自定义异常类(后缀使用Exception

        public class BussinessException extends Exception{……}

    (4)泛型中的类型传递

        public class LinkedList<K,T>{……}

    三、方法名(动宾短语,如:eatFood,而不是Food)        

        public class SomeClass{

            public SomeClass(){};    //Pascal命名用于构造函数

            public void someClassMethod(){……};    //Camel命名用于普通函数

        }

    四、接口命名(后缀命名法)

        接口文件及名称定义:Review、ReviewListener

        事件接口定义:OnClickListener

    五、变量命名

        私有成员变量(类变量):前缀m+Pascal命名法,如:private String mMyName

        私有成员变量(类变量)(优化):Camel命名法,如:private String myName

        静态成员变量:前缀s+Pascal命名法,如:static String sMyName

        局部变量:Camel命名法,如:String resolvedType = null;

        局部变量(优化):前缀_+Pascal命名法,如:String _ResovledType = null;

        方法内参数:Camel命名法,如:eatFood (IntentSender intent, int requestCode){……}

        方法内参数(优化)前缀p+Pascal命名法,如:eatFood (IntentSender pIntent, int pRequestCode){……}

        循环中的变量:可使用缩写字母,无心义字母,如:for(i=0;i<Count;i++){……}


3、命名格式化

    一、严格换行

        一个;一换行

    二、严格缩进

        使用Tab缩进

        注释缩进和代码缩进对齐

    三、严格注释

        文件,类,方法,方法函数,变量,属性,都要注释

        文件和类的注释必定要包含以下元素:Name, Description, Version, Date, Author, Change, Copyright

        遵循JavaDoc标准,如:

            /**

            *

            */

            //这是个人名称

            private String mName;

    四、声明的位置

        (1)将全部的框架定义的命名空间为一组,自定义的和第三方的命名空间放在另外一组

            

        (2)类成员变量声明位置

            全部的成员变量都应该声明在顶部,同时使用一个空行来将它们和属性方法分开。如:

            public class myClass{

                int mNumber;

                String mName;

                public void someMethod(){……}

            }

        (3)局部变量声明位置

            局部变量放到方法顶部

    五、使用Java预约义的类型而不使用类名来声明变量

        使用预约义的类型(关键词)而不使用类名来声明变量,如:

        使用 object 而不是 Object

        使用 int 而不是 Int32

4、规范的代码实例

 /**
 * 学生管理Activity类
 * @author jiatao
 * @date 2015-4-25
 * @company zkr
 * <h1>version : 1.0 </h1>
 */
package mobidever.demo.students;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;
/**   
 * 学生管理类
 * @author jiatao  
 * @date 2015-4-25 
 * @since level 8 (android 2.0)
 * @version 1.0 
 */
public class StudentManageActivity extends Activity {
 
 //定义的学生私有对象
 private Object mStudent;
 //静态的学生变量定义
 private static Object sStudent;
 /**
  * CLASS_ONE 一班的常量定义
  */
 private final String CLASS_ONE = "class1";
 
 private final String MESSAGE_WARN = "你输入的内容不正确,请从新输入";
 
 
 /**
  * 获得学生信息
  * @return 获得学生信息
  */
 public Object getmStudent() {
  return mStudent;
 }
 /**
  * 设置学生信息
  * @param mStudent 具体的学生信息值
  */
 public void setmStudent(Object mStudent) {
  this.mStudent = mStudent;
 }
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  
  //调用初始化界面的函数
  initDisplay();
  
  //调用班级学生计算函数,获得class1班的学生数量
  this.calculateStudentsCount(CLASS_ONE);
  Toast.makeText(this, MESSAGE_WARN, 3000).show();
 }
 
 /**
  * 根据班级计算学生数量
  * @param pClassName 班级名称
  * @return 返回班级所属学生数量
  * @author jiatao
  * @date 2015-4-25
  * @version 1.0
  * 
  * 加入了对男女生的判断
  * @author xuexing
  * @date 2015-4-26
  * @version 1.1
  */
 public int calculateStudentsCount(String pClassName){
  
  int _StudentCount = 5; //方法内局部变量
//  pStudentCount = 12;  //方法内的参数变量
//  mStudentCount = 13;  //类成员变量
  return _StudentCount;  
 }
 
 /**
  * 初始化界面
  */
 public void initDisplay(){
  
 }
 
}