代码规范

1、classpath的获取规则

/**
 * 获取文件在classpath下的物理路径
 * @param fileName
 * @return
 */
public static String getUrl(String fileName) {
    if (fileName == null) throw new NullPointerException();
    return ClassLoader.getSystemResource("").getPath() + fileName;
}

资源文件在系统资源目录下,如resources/,输出则在target目录下

2、方法结果接收方式

  • 参数接收
  • 全局变量
  • 返回值接收

说明:如果没有特殊情况,一律用第三种方式:返回值接收与上下文无关,只与方法当前状态有关,方便测试。

3、将过程拆分,提高代码可重用性

4、Java类加载的过程

java中类加载的全过程及内存图分析
类加载机制:
jvm把class文件加载到内存,并对数据进行校验、解析和初始化,最终形成jvm可以直接使用的java类型的过程。

5、禁止在catch中出现 e.printStackTrace()

从源码可以看到,e.printStackTrace() 对线程上锁,影响多线程下的执行效率。
应该使用Logback进行日志管理。

6、代码的系统无关性

例如:换行符 \n 和 \r\n,可以使用:
(1)System.getProperties()
(2)Guava中可以使用StandardSystemProperty
  这个是用来方便调用如java.version, java.home 等环境变量的,使用的是enum了,比如:

StandardSystemProperty.JAVA_VERSION.value(); 
// [result] 1.7.0_25 

7、是否要提供无参构造方法

这个要考虑Bean是否允许属性缺失的对象,如果允许,则可提供无参构造方法。

8、使用Preconditions进行参数校验

Preconditions里面的方法:

1 .checkArgument(boolean) :
功能描述:检查boolean是否为真。 用作方法中检查参数
失败时抛出的异常类型: IllegalArgumentException

**2.checkNotNull(T): **
功能描述:检查value不为null, 直接返回value;
失败时抛出的异常类型:NullPointerException

3.checkState(boolean):
功能描述:检查对象的一些状态,不依赖方法参数。 例如, Iterator可以用来next是否在remove之前被调用。
失败时抛出的异常类型:IllegalStateException

4.checkElementIndex(int index, int size):
功能描述:检查index是否为在一个长度为size的list, string或array合法的范围。 index的范围区间是[0, size)(包含0不包含size)。无需直接传入list, string或array, 只需传入大小。返回index。
失败时抛出的异常类型:IndexOutOfBoundsException

5.checkPositionIndex(int index, int size)
功能描述:检查位置index是否为在一个长度为size的list, string或array合法的范围。 index的范围区间是[0, size)(包含0不包含size)。无需直接传入list, string或array, 只需传入大小。返回index。
失败时抛出的异常类型:IndexOutOfBoundsException

6.checkPositionIndexes(int start, int end, int size):
功能描述:检查[start, end)是一个长度为size的list, string或array合法的范围子集。伴随着错误信息。
失败时抛出的异常类型:IndexOutOfBoundsException

 例子:
 Preconditions.checkNotNull(neme, "neme为null");
 Preconditions.checkArgument(neme.length()>0, "neme为\'\'");
 Preconditions.checkArgument(age>0, "age 必须大于0");

你可能感兴趣的:(代码规范)