代码review若干建议

来源:互联网 发布:硕士论文修改 淘宝 编辑:程序博客网 时间:2024/06/05 15:47

代码review若干建议
1. 数据库建表
参考《MySQL性能调优与架构设计》这本书。
1.1 统一使用支持事务处理的InnoDB存储引擎,字符编码utf-8,编码核对utf8_general_ci
1.2 表间关系尽量不要用id主键关联,例如订单与会员管理,可以用会员的唯一编号。
数据库迁移的时候可能会丢失id主键。
1.3 适当的建立索引。索引建立技巧参考书籍或baidu
1.4 适当的冗余字段,根据产品需求做冗余,如果有多个字段需要冗余,建议不要冗余了,一般冗余另外一张表的1~2个字段,哪些些字段可冗余,下面表的案例有些字段冗余多了。
1.5 范式和反范式权衡使用,有些数据需要作为快照
1.6 表是有主次之分的。例如订单,会建一张主要的订单信息表,相关业务都是围绕这个表扩展的,例如选品,支付,退货……一系列可扩展。到了支付系统里面,又会建立支付流水这张主表,其他的附加信息可以扩展。
1.7 表中数据不要存null这样的值,null处理麻烦事多,搞不好还会大大的影响性能,建议可以为null的值转换成not null default ‘’ 。
1.8 必要的唯一约束,唯一约束就是唯一索引。
1.9 表名命名:业务名称表名称[功能]。
例如,线下订单:off_order 线下订单项:off_order_item
表主键id的注释必须说明表的注释.例如:线下订单表主键id
Powerdesigner工具只做表间关系图。不作为最终的sql生成器。
手动把sql写好。
CREATE TABLE off_order (
id bigint(11) NOT NULL AUTO_INCREMENT COMMENT ‘主键’,
order_no varchar(50) NOT NULL COMMENT ‘订单编号’,
order_type tinyint(4) NOT NULL DEFAULT ‘0’ COMMENT ‘订单类型;1.零售,2批发’,
member_mobile varchar(50) NOT NULL DEFAULT ” COMMENT ‘会员手机号码’,
member_no varchar(50) NOT NULL DEFAULT ” COMMENT ‘会员卡号’,
member_name varchar(50) NOT NULL DEFAULT ” COMMENT ‘会员姓名’,
store_no varchar(50) NOT NULL DEFAULT ” COMMENT ‘网点编号’,
store_name varchar(50) NOT NULL DEFAULT ” COMMENT ‘网点名称’,
store_mobile varchar(50) NOT NULL DEFAULT ” COMMENT ‘网点联系手机号码’,
store_contact varchar(50) NOT NULL DEFAULT ” COMMENT ‘网点联系人姓名’,
area_name varchar(50) NOT NULL DEFAULT ” COMMENT ‘县域名称’,
area_addr varchar(50) NOT NULL DEFAULT ” COMMENT ‘县域地址’,
order_amount decimal(6,2) NOT NULL DEFAULT ‘0.00’ COMMENT ‘订单金额’,
pay_way tinyint(4) NOT NULL DEFAULT ‘0’ COMMENT ‘订单支付方式,1。现金支付; 2.会员卡支付;3.会员现金支付’,
pay_status tinyint(4) NOT NULL DEFAULT ‘0’ COMMENT ‘订单支付状态:0未支付;1支付中;2支付成功;3支付失败’,
terminal_serial varchar(50) NOT NULL DEFAULT ” COMMENT ‘终端机序列号’,
create_user_id bigint(11) NOT NULL DEFAULT ‘0’ COMMENT ‘创建用户Id’,
create_datetime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘订单创建时间’,
STATUS tinyint(4) NOT NULL DEFAULT ‘0’ COMMENT ‘记录状态,0,有效订单;1。订单已删除’,
PRIMARY KEY (id),
UNIQUE KEY order_no (order_no)
) ENGINE=InnoDB AUTO_INCREMENT=23195 DEFAULT CHARSET=utf8
1. 数据库字段说明:_time代表后缀 *代码匹配合适的文字
字段
字段名称
数据库类型
Java类型
注释
主键
id
Bigint
Long
线下订单主键id
订单编号
order_no
Varchar(可变长度)
String
订单编号
时间
_time
timestamp
Date
时间,日期(都是用这个类型,其他类型不合适)
类型
_type
tinyint
Integer
*类型。1.批发,2零售(类型要枚举)
状态
_status
tinyint
Integer
*状态。1.已支付,2未支付(状态要枚举)
标记
delete_mark
bit
Boolean
记录是否已删除。
金额
_ amount
decimal(8,2)
bigdecimal
*金额。
价格
_ price
decimal(8,2)
BigDecimal
*价格
线下:off 线上:online 订单:order 商品:good 记录:record 明细:detail
金额:amount 支付:payment 状态:status 类型:type 图片地址:img_url
区域:area 行政区:district 活动:activity 账户:account sku 销售:Sales
供应商:supplier 品牌:brand 平台:platform 种类:Category
规格:specification 网点店铺:store 广告:ad 用户:user 子项:item
库存:Stock 退货:Refund 操作:operation 时间time 编码:code
父级:parent 子级:sub 主:main 主键:id 编号:no 历史: history
价格:price 原始:original 实际:reality 卖家:seller 买家:buyer
代理:agent 省province 市city 县county 区district 地址address
发货:send 创建:create 收货:receive 标志:mark 备注remark
2. 代码编辑
去复习一下java基础的书籍,写代码可以写先写简单的中文步骤或代码流程图,这些步骤最后就是最好的注释,这样写代码我相信就算只写一半,第二天再来写都不会忘记。养成好的代码习惯非常重要。
1、码面向对象的思想。读代码都一块一块读的,快速定位。命名百度一下,有最佳命名方案的。
2、controller层接收参数,进行参数校验,然后把参数直接给service层处理。不要太多的逻辑处理,命名与业务相关,与service对应,接口url量采用restful,全部小写支持restful风格。
3、service逻辑处理的关键,每个service都应该对应良好的单元测试。方便别人和自己调试你的接口,命名与业务相关。
4、Dao要基本不需要涉及到业务逻辑。命名也基本不与业务相关。
6、变量命令写全一点,一般一个对象也就在一个业务里面用一次而已,都是简写,相当于把代码做了混淆。
5、码后要junit测试,调试,调整代码。对自己写的代码多做review。

原创粉丝点击