JAVA开发手册-基础篇-开发规范(三)

异常处理

  • Java 类库中定义的一类RuntimeException可以通过预先检查进行规避,而不应该通过catch 来处理,比如:IndexOutOfBoundsException,NullPointerException等等。
  • 异常不要用来做流程控制,条件控制,因为异常的处理效率比条件分支低。
  • catch时请分清稳定代码和非稳定代码,稳定代码指的是无论如何不会出错的代码。
  • 捕捉到的异常如果不处理就把它抛给调用者。
  • 捕获异常与抛异常,必须是完全匹配,或者捕获异常是抛异常的父类。

日志规约

  • 应用中不可直接使用日志系统(Log4j、Logback)中的API,而应依赖使用日志框架SLF4J中的API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。
  • 对trace/debug/info级别的日志输出,必须使用条件输出形式或者使用占位符的方式。
(占位符)
logger.debug("Processing trade with id: {} symbol : {} ", id, symbol);
  • 避免重复打印日志,浪费磁盘空间,务必在log4j.xml中设置additivity=false。
  • 异常信息应该包括两类信息:案发现场信息和异常堆栈信息。如果不处理,那么通过关键字throws往上抛出。
  • 谨慎地记录日志。生产环境禁止输出debug日志;有选择地输出info日志。避免随意输出日志。

MySQL数据库

  • 表名、字段名必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只出现数字。
  • 表名不使用复数名词。
  • 主键索引名为pk_字段名;唯一索引名为uk_字段名;普通索引名则为idx_字段名。
  • 小数类型为decimal,禁止使用float和double,否则会造成精度缺失。
  • varchar是可变长字符串,不预先分配存储空间,长度不要超过5000,如果存储长度大于此值,定义字段类型为text,独立出来一张表,用主键来对应,避免影响其它字段索引效率。
  • 表必备三字段:id(主键), gmt_create(创建时间), gmt_modified(修改时间)。
  • 表的命名最好是加上“业务名称_表的作用”。
  • 单表行数超过500万行或者单表容量超过2GB,才推荐进行分库分表。

MySQL语句

  • count(*)是SQL92定义的标准统计行数的语法,速率最快,统计为null的值。
  • count(列名)则不会统计null值。count(distinct col) 计算该列除NULL之外的不重复行数,注意 count(distinct col1, col2) 如果其中一列全为NULL,那么即使另一列有不同的值,也返回为0。
  • 当某一列的值全是NULL时,count(col)的返回结果为0,但sum(col)的返回结果为NULL,因此使用sum()时需注意NPE问题。
  • 在代码中写分页查询逻辑时,若count为0应直接返回,避免执行后面的分页语句。
  • in操作能避免则避免,效率极低。
  • 在表查询中,一律不要使用 * 作为查询的字段列表,需要哪些字段必须明确写明。(可以减少查询分析器解析成本)
  • 不允许直接拿HashMap与Hashtable作为查询结果集的输出。(值得类型不可控)
  • 更新数据表记录时,必须同时更新记录对应的gmt_modified字段值为当前时间。
  • 执行SQL时,不要更新无改动的字段,一是易出错;二是效率低;三是增加binlog存储。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值