代码规范——更新中

最后更新时间:2018/09/27 16:45

工具使用

使用sonarqube 进行对代码扫描

idea安装插件SonarLint,进行本地扫描

规范总结

1、非同步类替换同步类

Java API的早期类(例如Vector,Hashtable和StringBuffer)已经过同步,以使它们具有线程安全性。不幸的是,即使从单个线程使用这些集合,同步也会对性能产生很大的负面影响。

最好使用他们新的非同步替换:

ArrayList或者LinkedList代替Vector
Deque 代替 Stack
HashMap 代替 Hashtable
StringBuilder 代替 StringBuffer

2、在良好封装类,私有属性,公有get set方法

3、控制流语句“if”,“for”,“while”,“switch”和“try”不应该嵌套3个以上

4、使用Closeable接口进行对流关闭,否则未能正确关闭资源将导致资源泄漏

具体而言,实现Closeable接口或其超级接口的连接,流,文件和其他类AutoCloseable必须在创建后手动关闭。此外,该close调用必须在一个finally块中进行,否则异常可能会使调用无法进行。

5、程序员不应该注释掉代码,因为它会使程序膨胀并降低可读性。应删除未使用的代码,如果需要,可以从源代码控制历史记录中检索。

6、实用程序类是静态成员的集合,并不是要实例化的。即使是可以扩展的抽象实用程序类也不应该有公共构造函数。Java为每个没有明确定义至少一个的类添加了一个隐式公共构造函数。
因此,至少应该定义一个非公共构造函数。

7、永远不应该在String对象上调用”toString()”

8、因为从编译的应用程序中提取字符串很容易,所以永远不应对凭证进行硬编码。这样做,他们几乎可以保证最终落入攻击者的手中。对于分发的应用程序尤其如此。

凭据应存储在受强保护的加密配置文件或数据库中的代码之外。

9、“Boxing”是将原始值放入原始包装器对象的过程。当纯粹使用包装类的toString方法时,这是浪费内存和循环,因为这些方法是static,因此可以在没有类实例的情况下使用。类似地,应该避免使用带有非参数的primitive-wrapper类中的static方法,就像将空字符串连接到基元一样。valueOfString””

10、实例方法不应写入“静态”字段

11、非线程安全字段不应该是静态的