当前位置: 移动技术网 > IT编程>移动开发>Android > Java编程规范

Java编程规范

2018年01月04日  | 移动技术网IT编程  | 我要评论

马尔西娅-爱子,台湾代理ip,海鹰战斗机

从一开始接触编程就多次听到编程得养成好的编码习惯。的确,不让好的编码成为习惯,也就只能在随意的代码风格里放纵了(网上浏览到的代码是有这样的吧)。

在网上也看了很多人的总结,学到很多。将其中的部分进行汇总,这次的随笔大部分只是文字的搬运工,如有误还请指正。

 

一.标识符命名(尽量以最少的字符表达完整的含义,但是命名中缩写使用:尽量不要用缩写,除非该缩写是约定俗成的。)

常见的英文单词缩写:

1.1 驼峰(Camel)命名法:又称小驼峰命名法,除首单词外,其余所有单词的第一个字母大写。

例:touchEvent,用于“方法名”,“变量名”,“参数名”(参数应该避免用单个字符命名。)
1.2 帕斯卡(pascal)命名法:又称大驼峰命名法,所有单词的第一个字母大写。

例:TouchEvent,用于“接口名”、“类名”。
1.3 下划线命名法:单词与单词间用下划线做间隔。

例:touch_event,用于“常量名”命名(字母全大写载用下划线命名,如:TOUCH_DOWN)、“资源文件”、“控件”及“布局文件”(字母小写)等。

1.4.其他。

包(package): 采用反写域名命名规则,即com.xx.xxx.xxxx形式,如:com.tencent.qq.activitys

全部使用小写字母。一级包名为com,二级包名为xx(一般为公司或个人域名),三级包名根据应用进行命名,四级包名为功能模块名。

 

二:源文件结构

一个源文件包含(按顺序地):

许可证或版权信息(如有需要) package语句 import语句 一个顶级类(只有一个)

以上每个部分之间用一个空行隔开。

2.1许可证或版权信息

如果一个文件包含许可证或版权信息,那么它应当被放在文件最前面。插入版权信息参考

 2.2 import语句

import不要使用通配符*,即引入同一个包下面多个class的偷懒写法。一般不建议这样写。

import语句可分为以下几组,按照这个顺序,每组由一个空行分隔:

所有的静态导入独立成组 com.google imports(仅当这个源文件是在com.google包下) 第三方的包。每个顶级包为一组,字典序。例如:android, com, junit, org, sun java imports javax imports

组内不空行,按字典序排列。

2.3 类声明

只有一个顶级类声明(在与他同名的源文件中)

注:1.类成员顺序:每个类应该以某种逻辑去排序它的成员(最好不要简单的按照时间顺序添加到成员最后)。

2.当一个类有多个构造函数,或是多个同名方法,这些函数/方法应该按顺序出现在一起,中间不要放进其它函数/方法。

 

三、格式

3.1大括号

大括号与if, else, for, do, while语句一起使用,即使只有一条语句(或是空),也应该把大括号写上。

对于非空块和块状结构:

左大括号前不换行 左大括号后换行 右大括号前换行 如果右大括号是一个语句、函数体或类的终止,则右大括号后换行; 否则不换行。例如,如果右大括号后面是else或逗号,则不换行。
return new MyClass() {
  @Override public void method() {
    if (condition()) {
      try {
        something();
      } catch (ProblemException e) {
        recover();
      }
    }
  }
};

花括号不要单独一行,和它前面的代码同一行。而且,花括号与前面的代码之间用一个空格隔开。

public void method() { // Good 

} 

public void method()
{ // Bad
}  

public void method(){ // Bad

} 

 

一个空的块状结构里什么也不包含,大括号可以简洁地写成{},不需要换行。例外:如果它是一个多块语句的一部分(if/else 或 try/catch/finally) ,即使大括号内没内容,右大括号也要换行。

示例:

void doNothing() {}

3.2 空格使用

1.if、else、for、switch、while等逻辑关键字与后面的语句留一个空格隔开。

// Good
if (booleanVariable) {
    
} else {
    
}

// Bad
if(booleanVariable) {
    
}else {
    
}

2.运算符两边各用一个空格隔开

int result = a + b; //Good, = 和 + 两边各用一个空格隔开
int result=a+b; //Bad,=和+两边没用空格隔开

3.方法的每个参数之间用一个空格隔开。

public void method(String param1, String param2); // Good,param1后面的逗号与String之间隔了一个空格
method(param1, param2); // Good,方法调用时,param1后面的逗号与param2之间隔了一个空格
method(param1,param2); // Bad,没有用一个空格隔开

3.3 空行的使用

将逻辑相关的代码段用空行隔开,以提高可读性。空行也只空一行,不要空多行。在以下情况需用一个空行:

两个方法之间 方法内的两个逻辑段之间 方法内的局部变量和方法的第一条逻辑语句之间 常量和变量之间

3.4 当一个表达式无法容纳在一行内时,可换行显示,另起的新行用8个空格缩进。

String str = String.format("%.3f,%.3f,%.3f,", bandGyroscopeEvent.getAngularVelocityX(),
        bandGyroscopeEvent.getAngularVelocityY(), bandGyroscopeEvent.getAngularVelocityZ()) + strTimestamp + "\n";

3.5每次只声明一个变量

不要使用组合声明,比如

int a, b;//bad

//good
int a;
int b;

3.6 量Android Studio中格式化代码快捷键

CTRL + ALT + L (Win)
OPTION + CMD + L (Mac)

3.7 枚举类

很多经典的Java书已经看到推荐使用枚举来代替int常量了,但是在Android开发中不建议使用枚举,特别是大型的App中,能不用则不用。因为它会牺牲执行的速度和并大幅增加文件体积。也是性能优化中减少OOM(内存优化)的一个方面。Android总使用枚举注解代替枚举优化代码。

3.8补充

文字大小的单位统一用sp,元素大小的单位统一用dp。

应用中的字符串统一在strings.xml中定义,然后在代码和布局文件中引用。

颜色值统一在colors.xml中定义,然后在代码和布局文件中引用。另外,不要在代码和布局文件中引用系统的颜色,除了透明。

 

四、注解

4.1文件头注释

文件顶部统一添加版权声明,声明的格式如下:

/**
 * Copyright (c) Microsoft Corporation All rights reserved.  
 */

4.2 类和接口注释

类和接口统一添加javadoc注释,格式如下:

/**
 * 类或接口的描述信息
 *
 * @author ${USER}
 * @date ${DATE}
 */

4.3 方法注释

下面几种方法,都必须添加javadoc注释,说明该方法的用途和参数说明,以及返回值的说明。

接口中定义的所有方法 抽象类中自定义的抽象方法 抽象父类的自定义公用方法 工具类的公用方法
/**
 * 登录
 *
 * @param loginName 登录名
 * @param password  密码
 * @param listener  回调监听器
 */
public void login(String loginName, String password, ActionCallbackListener<Void> listener);

4.4 变量和常量注释

接口中定义的所有常量 公有类的公有常量 枚举类定义的所有枚举常量 实体类的所有属性变量

本随笔参考Google Java编程风格指南

 

 

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网