3.
类名
使用首字母大写的驼峰形式,属于POJO对象,后缀(DO、DAO等)全部大写
例:WxhcSettleDO
方法、参数、成员变量、局部变量名
使用首字母小写的驼峰形式
例:maxValue、cal()、wxhcSettleDO.next()、wxhcSettleDO.id
常量名
全部大写,单词间用下划线隔开
例:MAX_PAGE_SIZE
包名
全部小写,点分割符之间有且只有一个自然语义的英语单词(单数形式)
例:com.aifocus.wxhc.api
类名
抽象类以Abstract开头
基础类以Base开头
异常类以Exception结尾
测试类以Test结尾
常量类以Constant结尾
枚举类以Enum开头
方法名
获取单个对象:get
查询多个对象:query、list
统计数量:count
插入:insert、save、batchXXX
删除:delete、remove、batchXXX
更新:update、batchXXX
变量名
变量名要有意义的正确英文命名,跟业务相关,例:matchItemList
变量名的声明与使用处尽量相邻
变量名声明时,赋予初值
通过使用标准的Java命名约定,可以使自己和其他开发人员更容易阅读代码。Java程序的可读性非常重要,它能让程序开发者花费更少的时间来读懂代码的作用。减少开发时间,提高工作效率。
4.方法注释
方法的注释中必须要有方法逻辑注释、入参注释、出参注释,可以使用Javadoc形式
所有public方法都应该有方法注释
接口注释
接口中的所有方法和成员变量都必须写注释
慎用注释
好的命名规范以及代码风格就是一种注释,不要滥用注释
代码修改了,注释也一定要随之修改
注释掉的代码,如果之后永久不用,立即删除
在Java的编写过程中我们需要对一些程序进行注释,除了自己方便阅读,更为别人更好理解自己的程序,所以我们需要进行一些注释,可以是编程思路或者是程序的作用,总而言之就是方便自己他人更好的阅读
综上内容突出最多都是方便自己也方便他人更好的读懂每一行代码,提高开发效率和时间,减少代码耦合,提倡编写出省时省力,项目扩展性高的优质代码。
比较容易出现错误的点:
1.在循环插入操作时不要一直new对象然后向list里面追加 而这个list只是首次初始化,容易造成out of memory(内存溢出) 因为这里面就是涉及到jvm 的 GC操作回收了,(比如我们在一直new对象然后执行插入语句这个不会报错,是因为里面jvm 在内存不足时会自动回收内存,,还有在sql优化的时候我们拆分语句,分装成两条也是需要考虑一下内存问题,最后还有就是最最最常见的查询query的时候在query为空而又没有做分页查询的话,相当于是全表查询结果这也是容易造成的OOM),gc操作其实就是把一些已经不在调用的对象释放,或者转成老年代,在做app 或者 pc 端应用的时候 就可以考虑设置 堆和栈 分配参数 (新生代(eden)与老年代大概是1:4) 来调优内存不足 ,当然万一出现错误地时候我们可以在 OOM时 执行脚本
"-XX:OnOutOfMemoryError=D:/tools/jdk1.7_40/bin/printstack.bat %p“
当程序OOM时,在D:/a.txt中将会生成线程的dump
可以在OOM时,发送邮件,甚至是重启程序
2.在POJO类中布尔类型的变量前面不要加 is前醉,否则部分框架解析会引起序列化错误,(变成delect 导致获取不到属性的值)
3.OOP规约
3.1 避免通过一个类的对象引用访问此类的静态变量或者静态方法,无谓增加编译器解析成本,直接类名来访问就好
3.2 复写方法必须加@Override注解 这个注解可以准确判断是否副高成功
3.3 尽量不要使用过时的方法,最好调用新的方法
3.4 objectde equals方法容易爆空指针异常 object.equals(“test”) 不要用 可以考虑用 objects。equals 在jdk 7 中的引用
4 集合
1.list转成数组问题 在用toArray()的时候要带参数 ,使用无参返回值只能是object[]类,强转类型将出现ClassCastException
2. 不要在foreach循环里面进行元素的remove/add操作 要先 Iterator 方式 ,如果并发操作需要加锁
5.map hashtable 和currenthashmap key 和 value 不能允许为空,里面都是涉及线程安全问题。hashmap是可以存null的 因为是线程不安全的
6 list 在里面c去除重复 可以使用 set元素的特性 尽量不要用 contains方法进行遍历对比
7。循环体要考虑性能, 在定义对象,变量,获取数据库连接,进行不必要的try catch 操作
8.在使用正则表达式时,利用好其预编译功能,可以有效的加快正则匹配速度。(不要在方法体内定义 Pattern pattern = Pattern。compile(“规则”);)
9.在写sql 的时候 尽量不要用join 万一要用 数据类型必须要绝对的一样,然后被关联的字段确保有索引
10 在 varchar字段建立索引的时候 指定索引的长度,没有必要对全字段建立索引
11. 在使用 order by 排序的时候可以考虑建立的索引字段的有序性
12 新增索引可以考虑根据不同的业务场景建立不同的索引 (主键,index 。全文 等等)
13 慎用 @transactional 事物会影响数据库的QPS还有回滚方案包括缓存等
3.在写sql语句,或者 sql 语句分析时的时候 可以使用 explain 分析语句,这个可以快速定位sql 的瓶颈,再考虑优化问题