当前位置: 首页 > 后端技术 > Java

代码检查规则:Java语言案例详述

时间:2023-04-01 14:25:48 Java

本课程是《代码检查规则:Java语言案例详解》,通常Java代码检查规则可以分为以下十类:接下来我们来看看每一类的内容。1.源文件规范这类规范主要从文件名、文件编码、特殊字符三个方面制定规则。01文件名Java源文件的名称必须与其包含的顶层类的名称一致,包括大小写,并使用.java作为后缀。02文件编码为了保持编码风格的一致性,避免编码不一致造成的乱码,要求所有源文件编码必须使用UTF-8格式。03特殊字符特殊字符的规则主要针对换行、缩进、空格等操作制定。有如下强制规定:①除换行符外,ASCII空格(0x20)是唯一合法的空格字符。②由于不同系统制表符转换成空格的个数不一致,统一使用空格缩进。③文件的换行符使用Unix格式(\n)代替Windows格式(\r\n)。2、源文件组织结构规范的一般规则主要规定了源文件应包含的具体组成部分以及各部分之间应遵循的一系列规则。对于源文件的组件,规定如下:源文件必须依次包含:许可证或版权声明、包声明、导入声明、唯一顶级类、四个方面的内容。同时每两部分之间用一个空行隔开,不允许有多余的空行。对于以上四个方面的内容,每个组件都有相应的编码规则。01Licenseorcopyrightstatementspecification如果文件有license或copyright声明,应该放在开头,如果没有,可以忽略。02packagestatementspecificationpackagestatement必须占单行,不能换行,且该行允许超过Java的120个字符的列宽限制。03导入语句规范①对于所有非静态导入,禁止使用通配符导入。②删除所有不用的import语句,与package语句一样。③每条导入语句占一行,不换行,允许超过120个字符的列宽限制。04类声明规范①每个源文件只允许包含一个顶级类。如果需要定义其他类,可以将多余的类放在另一个独立的源文件中,或者作为定义在顶层类中的内部类使用。②重载的方法必须放在一起,即禁止在同名的构造函数或方法之间插入其他成员。3.代码结构规范这部分规则主要是对花括号(即大括号)、缩进和换行、空行以及其他一些说明的一系列规范。01大括号大括号常用于类和方法定义以及代码块划分,大括号在使用中往往需要合理的换行来配合。规定在非空代码块中使用花括号时,应遵循K&R风格(KernighanandRitchieStyle)。三个主要原则是:①左花括号({)前不要断行,后面要换行;花括号(})前要有一个换行符;③右花括号(})后必须跟换行符,否则右花括号后没有换行符。02缩进和换行缩进和换行主要是为了保证代码风格的一致性,提高代码的可维护性。主要规范是:①每次开始编写新的代码块时,使用4个空格进行缩进,并在代码块末尾恢复之前的缩进级别。②每条语句后必须换行,每行只能有一个完整的语句。③除package语句和import语句外,单行代码的字符数限制在120以内,超过则需要换行。换行时,遵循以下五个原则:→第二行相对于第一行缩进四个空格。从第三行开始,不再缩进。→运算符用以下内容换行,即运算符位于行的开头。→方法调用的标点符号用以下内容包裹起来。→当一个方法调用中的多个参数需要包装时,请在逗号之后包装。→不要在括号前换行。03空行合理使用空行可以提高代码的可读性,方便后期维护。对于空行的使用,有以下规范进行限制:①在类的不同成员之间添加空行,包括:成员变量、构造函数、方法、内部类、静态初始化块、实例初始化块等。②有无需在两个成员变量声明之间添加一个空行。空行通常对成员变量进行逻辑分组。③在方法体中,根据需要添加空行,对语句进行逻辑分组。④使用空行时,禁止使用连续的空行。04其他注意事项Java中数组定义有两种形式,是标准的代码书写形式,要求如下:①类型用方括号紧连表示数组,即方括号写在前面数组名称。当注解和注解同时存在时,统一的规范要求是:②类、方法、构造函数、成员属性的注解直接写在注解块之后,每个注解占一行。当同时有多个修饰符时,需要依次书写。顺序要求如下:publicprotectedprivateabstractstaticfinaltransientvolatilesynchronizednativestrictfp必须是第一个访问修饰符,后面是abstract,即抽象类或抽象方法,后面是static,final。这些是常见的修饰符类型。对于其他修饰符,您可以按照上面列出的顺序编写它们。为了避免小写字母l和1混淆,有如下规定:长整数必须以大写字母L结尾,以区别于数字1。4.命名约定在Java中,是否是方法name或类名,需要使用驼峰命名格式进行命名。01驼峰命名格式两种驼峰命名格式的使用范围有如下规范:①方法名、参数名、成员变量、局部变量均采用lowerCamelCase风格,即首字母大写的驼峰命名格式字母小写。②类名采用UpperCamelCase风格,即首字母大写的驼峰命名格式,以下情况除外:DO/BO/DTO/VO/AO/PO/UID等02类命名格式另外,对于一些类,命名格式有更具体的规范要求:①抽象类名以Abstract或Base开头;②异常类名以Exception结尾;③测试类以测试类命名类名以Test开头和结尾。03常量命名格式对于常量的命名,规范与上述不同:①常量名称全部大写,单词之间用下划线分隔。②不允许任何未定义的常量直接出现在代码中。五、OOP规范OOP规范主要是面向对象程序设计过程中定义的一些类所制定的一些规则。包括的强制性规范要求是:①所有POJO类属性必须使用包装数据类型,禁止使用基本类型。②所有的重写方法都必须使用@Override注解。③Object的equals方法容易抛出空指针异常,应使用常量或具有一定值的对象来调用equals。④定义DO/DTO/VO等POJO类时,不要设置任何属性默认值。6.集合处理规范集合和数组是我们开发过程中使用频率最高的两种数据结构。两者的使用也有严格的强制规范:①当一个集合需要转为数组时,必须使用集合的toArray方法,传入的是一个完全相同类型的数组,并且大小是list.size()。②在为集合查找子集时,需要非常注意对原集合的元素添加或删除,这会导致子列表的遍历、添加、删除,从而导致ConcurrentModificationException。应该对子集合进行相应的操作,以反映到原始集合中,避免异常的发生。③不要对循环体内的集合元素进行remove/add操作。请使用Iterator(迭代器)方法移除元素。如果并发操作,则需要锁定Iterator对象。7、控制语句规范Java中的控制语句主要有switch、if、else、while等,这些语句的使用在编码过程中需要遵循以下规范:①在一个switch块中,每个case要么通过break/return等终止,或注释表示程序将在哪种情况下继续执行;在switch块中,必须包含default语句并将其放在末尾。②if/else/for/while/do语句的使用必须使用花括号。即使只有一行代码,也要避免单行编码。③在高并发场景下,避免使用“等于”判断作为中断或退出条件。防止程序在崩溃现象下无法正常中断或退出的情况。8、注解协议正确使用注解可以提高程序的可读性,方便后期维护。注释可以是程序描述或编程思想。Java中的注释主要分为三种类型:文档注释、单行注释和多行注释。注释规范包括:①类、类属性、类方法的注释必须使用文档注释的形式,即使用/content/格式,不能使用单行注释的格式。单行注释和多行注释主要用在方法体中。②对于方法内部的单行注释,在注释语句之上另起一行,使用//注释。方法内部的多行注释,使用/content/comment,注意与代码对齐。9、异常处理规范在Java中,我们通常使用trycatch来处理异常处理,Java中的异常分为运行时异常和非运行时异常。①对于运行时异常的处理,有如下规范:Java类库中定义的RuntimeException,可以通过预检查避免的,不应该用trycatch来处理,如:空指针异常,数组越界异常等。②对于捕获后的异常处理,有如下规范:捕获异常是为了处理异常,捕获后不做任何处理不要扔掉。如果你不想处理异常,你应该将异常抛给它的调用者。最外层的业务用户必须处理异常并将其转换为用户可以理解的内容。即对于捕获到的异常,要么继续向上抛,要么自己处理。③异常处理规范要求还包括:finally块中不能使用return语句。10、缺陷检查规则缺陷检查主要是对Java源码进行静态分析,扫描潜在的缺陷,如:空指针异常、死循环等。该阶段需要遵循的规则包括:①StringBuffer不能定义为单个字符和StringBuilder。②任何被锁定的对象都需要确保其锁定可以被释放。③严格避免死循环的发生。④替换字符串中的点(“.”)、竖线(“|”)、文件分隔符(“File.separator”)时,需要注意它们的特殊含义。“.”:匹配任意单个字符。用于replaceAll,匹配一切。“|”:通常用作选项分隔符,它匹配字符之间的空格“File.separator”:匹配特定于平台的文件路径分隔符。在Windows上,这将被视为转义字符。⑤synchronize锁成员变量时,成员变量必须是final类型。⑥synchronize锁定的成员变量类型一定不能是装箱类型。⑦对于spring管理的所有类,其成员属性的初始化必须使用注入。⑧当使用trycatch方法捕获异常,需要在catch中输出异常信息时,一定不能使用printStackTrace方法。这种方法会给后面分析代码带来困难。相反,应该使用一些日志框架来方便用户检索和浏览日志。⑨当方法的返回值中包含操作状态码时,状态码不可忽略⑩【%s】数组存在协变,元素赋值类型与初始化类型不一致。这样的话编译是可以通过的,但是在runtime阶段会报错。?用户名和密码不要直接写在Java文件中,以免泄露。而是应该将相应的关键信息写入配置文件中,以供读取。?方法名和成员变量名不能重名,也不能区分大小写。Java的十种代码检查规则今天就讲到这里。学完是不是觉得自己掌握了一个亿!

猜你喜欢