美文网首页
Java代码规范

Java代码规范

作者: 镜花水岳 | 来源:发表于2020-07-06 08:34 被阅读0次

    第1章 引言

    1.1介绍

    本文档以SUN的标准Java代码规范为基础,结合公司的实际需要,做一些修改和补充,编写次文档的目的是规范公司开发代码,增加代码清晰度,减少bug,降低后期维护成本和代码审查,养成代码规范的习惯,便于开发人员自身成长。

    第2章 标识符命名

    注:所有标识符不能出现中文,尽量使用通俗英文,不可拼音和英文混用。

    2.1 包名

    全部使用小写字母,单词间不要用字符隔开

    正例:com.axj.batchfile

    反例:com.axj.batch_file

    2.2 类名

    2.2.1 类命名

    类名使用驼峰命名,每个自然语义的单词首字母大写,其他字母小写

    正例:SendThread

    反例:sendThread,Sendthread

    2.2.2 类后缀

    类名不同的后缀代表不同的类型:

    2.2.2

    2.3方法名

    首字母小写,后面自然语义的单词首字母都大写

    正例:closeSession

    反例:CloseSession,closesession

    动词在前,名词在后

    正例:closeSession

    反例:sessionClose

    方法命名格式(方法名要准确表达业务的含义):

    2.3

    2.4 变量、参数名

    变量一定要清楚表达什么意思,一般取一些通俗有意义的名字,尽量使用简短英文单词。

    命名规则:

    1、首字母小写,后面自然语义的单词首字母都大写

    2、只能以字母、“_”或“$”符号作为变量名开头。

    3、变量中可包含数字,但不能以数字开头。

    4、除了“_”和“$”符号以外,变量中不能包含其他特殊字符。

    5、不能用class、int、String、public等java关键字做为变量名。

    6、在java中变量名严格区分大小写,例如:name和Name就是两个不同的变量

    7、静态变量和枚举类型字母全大写,多个单词之间用”_”分隔,如:TIME_EVENT

    第3章代码注释

    3.1 注释分类

    注:注释主要分为2种,实现注释和文档注释。

    3.1.1 实现注释

    实现注释使用/*...*/和//界定,使用/*...*/来进行块注释,使用//进行行注释,位于注释代码上一行。

    3.1.2文档注释

    文档注释描述Java的类、接口、构造器,方法,以及字段(field)。每个文档注释都会被置于注释定界符/**...*/之中,一个注释对应一个类、接口或成员。该注释应位于声明之前,javadoc是j2sdk里面一个非常重要的工具,如果你按照规范在Java的源代码里面写好注释的话,那么它就可以生成相应的文档,便于开发者察看,Myeclipse生成步骤,点击菜单栏的Project,选择generate javadoc,下一步即可。

    javadoc参数定义:

    @author  对类的说明 标明开发该类模块的作者

    @version  对类的说明 标明该类模块的版本

    @see    对类、属性、方法的说明 参考转向,也就是相关主题

    @param    对方法的说明 对方法中某参数的说明

    @return  对方法的说明 对方法返回值的说明

    @exception  对方法的说明 对方法可能抛出的异常进行说明

    3.2 注释条件(必加)

    1、类的注释

    2、方法的注释

    3、在代码复杂处注释

    4、代码修改处注释上时间和修改原因

    5、全局变量注释

    6、在多重嵌套和循环逻辑上注释

    7、接口注释

    8、调用工具类中方法的注释

    3.3 注释举例

    3.3.1 类注释

    /**

    *类功能概述×××××××

    *

    *@author huwei

    *@time 2017-8-20

    */

    public class LogicManager {

    ......

    }

    3.3.2 方法注释

    /**

    * 方法说明×××××××

    *

      * @param1 参数说明

    * @param2 参数说明

      * @return 返回值说明

      * @throws Exception

      */

    public boolean executeLogic(int param1, int param2)throws Exception{

    ......

    return true;

    }

    3.3.3 全局变量、字段、属性注释

    public class ReadManager {

      /** 全局的计数变量*/

      private final int count;

      /** 字段/属性*/

      private String name;

    }

    3.3.4 代码域注释

                /*----------开始:解析数据库数据 ------- */

                //\1拆分数据库数据

                String Row[] = sStr.split("\1");

    waitRecord = new WaitRecord[Row.length];

                /* 循环存储对象到List */

    for (int i = 0; i < Row.length; i++) {

    String Col[] = Row[i].split("\2");

    waitRecord[i] = new WaitRecord();

    waitRecord[i].waitId = Col[0];

    waitRecord[i].userId = Col[1];

    waitRecord[i].username = Col[2];

    waitRecord[i].longId = Col[3];

                    waitList.add(waitRecord[i]);

    }

                  /*----------结束:解析数据库数据 ------- */

    第五章代码习惯

    5.1 异常抛出

    进程和线程可能出现一系列异常,异常的出现如果没有抛出可能会导致进程死掉或线程崩溃,所以需养成异常捕获抛出的习惯,避免应用因进程卡住,异常异常捕获后,需打印异常日志,否则出现异常时不好查找问题。

    5.2 减少嵌套

    代码嵌套层太多,会严重影响代码可读性,处理方法:

    1、使用return跳出,减少else使用

    2、条件使用逻辑运算符(&& 或 ||等)进行拼接

    3、整合成子方法

    5.3 判断字符串相等

    1、java中字符串的比较是==比较引用,equals 比较值

    我们经常习惯性的写上if(str1==str2),这种写法在java中可能会带来问题

    例子1:String a="abc";String b="abc",

    那么a==b将返回true。因为在java中字符串的值是不可改变的,相同的字符串在内存中只会存

    一份,所以a和b指向的是同一个对象;

    例子2:String a=new String("abc"); String b=new String("abc");

    那么a==b将返回false,此时a和b指向不同的对象。

    2、用equals方法比较的是字符串的内容是否相同

    example:String a=new String("abc"); String b=new String("abc"); a.equals(b);将返回true。

    通常情况下,为了避免出现上述问题,判断字符串是否相等使用equals方法,具体的原因得引出常量池概念,这里不做详细描述

    5.4 字符串拼接

    拼接字符串尽量使用StringBuffer或者StringBuilder,使用”+”号每次会new一个对象,对空间和性能还是有一定影响的。

    5.5 NPE处理

    在java开发最常见的异常就是NPE(java.lang.NullPointerException)异常,需有效的规避异常,进行null判断,可能出现null模块,取集合元素,数据截取,方法返回,socket传输的数据,数据库取值等等...

    5.6 日志输出

    平时调试代码或输出日志习惯使用System.out.println(),system.out都写入到一个文件里去了,对一个文件的读写就会排队写,而且syso在当前线程,必须写完才继续下面的程序。 如果使用log工具,你的日志会发散在多个日志文件上。可以控制日志是否输出,而且log工具只是通知要写日志,而不必等日志写完。

    ————————————————

    原文链接:https://blog.csdn.net/u013050593/java/article/details/77750807

    相关文章

      网友评论

          本文标题:Java代码规范

          本文链接:https://www.haomeiwen.com/subject/iqniqktx.html