代码进度调查的具体考察点
一.参数检查
所有公共方法都必须进行参数检查,参数检查失败,并显式抛出异常或相应的响应代码。
接口还显式使用注释限定参数和返回值的验证。 作为协议,调用方根据注释约束传递参数,返回值要求注释约束提供程序根据注释请求返回结果。
二、魔法数字(幻数) )
要使代码中的幻数为零,可以将幻数定义为枚举或常量以提高可读性。
三.空指针检查
不知道返回集合是否可以为空时,判断为非空后进行for循环。
尽可能返回空对象或空集合而不是空集合。
在判断字符串为空的情况下,要判断是否为空,再判断是否为空,最好提出共同的方法。
a .使用a.equal(b )时,将常数放在左边。
四.下标过境
方法作为参数传递给数组下标时,从一开始就进行下标越界的检查,避免下标越界异常。
五.重复验码
不允许写重复代码。 重复代码使用重构工具提取重构。
六.命名规范
包、类、方法、字段、变量和常量的命名遵循规范。
名副其实地下令,一方面提高可读性,另一方面鼓励在命名过程中考虑方法、变量和类的作用是否合适。
不要在循环中调用服务,也不要在循环中执行跨网络操作(如数据库)。
请注意,循环或递归必须包含停止循环/递归的条件。
尽量避免while(true ),如果一定要写的话,在循环开始处添加sleep,以免马上出现异常而让CPU跑。
七.注意循环
八.关注频率
写每个方法时,请注意该方法的调用频率。 一天多少次,一分钟多少次,一秒钟多少次,峰值有可能达到多少? 调用频率高的东西要考虑性能指标,考虑是否破坏数据库和高速缓存等。
九.错误控制
避免太大的try块,不要在try块中包含不出现异常的代码,以便一个try块可以处理一个或多个异常。
请细化异常的类型,任何类型的异常都不要写Excetpion。
catch块尽可能维护一个块来捕获一种类型的异常,而不要忽略捕获的异常。 捕获后进行处理,或者重新抛出新类型的异常。
方法在内部,不要向别人扔自己能处理的异常。
不要在try.catch上参与控制过程。 异常控制的根本目的是处理过程的异常。
十.关于长度
如果一行代码太长,请将其分解; 如果一个方法太长,请重建该方法。 如果一个类太长,请考虑取消分类
十一.外部依赖的性能
调用外部依赖时,请查明此外部依赖可以提供的性能指标,并考虑是否可以提供适合您的使用场景的服务。
十二.避免重造车轮
请不要重复做车轮。 如果成熟类库已经实现了类似的功能,请优先使用成熟类库的方法。 这是因为成熟类库的方法通过了很多人的测试验证,非常可靠。
十三.注意多线程
在多线程环境中,必须注意数据的原子性和可见性等线程安全问题。 最典型的HashMap、SimpleDateFormat、ArrayList是非线程安全的。 此外,使用Spring自动扫描服务时,该服务缺省为单实例,其内部成员由多个线程共享,如果直接使用成员变量,则不是线程安全的。
十四.日志打印
必须设置适当的日志级别才能打印日志。
生成成长字符串的toString ()时,可以通过日志级别和if语句控制打印量。 为什么这么说呢,因为长字符的拼接会消耗很多gc年轻一代的内存。
要在log4j上打印日志而不是直接在控制台上打印日志,请执行以下操作:
十五.方法实现简况
这不能说是细节,总之就是不要晃动地写代码。 具体问题请具体分析。
十六.正面依赖
下级模块不能依赖上级模块; 不要让数据层依赖于服务层; 服务层不能依赖于UI层; 模块之间不能形成循环依赖关系。
十七.分治
分开来说,复杂的问题需要分解成几个比较简单的问题来解决,首先分析核心问题,然后分析核心参与是什么,结果是什么,参与可以通过几步的变化来产生结果。 (该条为第10条)关于长度,有一定的重叠) ) ) ) ) ) )。
十八.条码稳健性意识
这一条是前面的几个综合,比较综合。 各种边界条件(例如,第四条的下标过境、用户输入数据超过最大值等)、处理失败或发生异常的方法(参照第九条、错误控制)、验证输入参数和返回值)第一条的参数