java开发CodeReview

Posted 全栈高级工程师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java开发CodeReview相关的知识,希望对你有一定的参考价值。

  1. 面向失败编程:

代码健壮性:使用get方法将判空条件前置

原子性:对多张表数据进行修改时使用事务

2、性能优化:

批量处理:循环调用多次更新sku信息优化为将调用一次skuList批量处理

数据存储优化:字段存储的字段长度最多有5000个字段,使用了mysql存储redis的key方案

并行流提效:使用stream流代替for循环,并行流效率更高

3、代码优化:

AOP切面优化:在AOP切面中使用多个catch,根据异常类型进行不同等级的日志记录

日志分类:业务规则的限制放在warn日志,系统执行错误放在error日志中

复杂判断解耦:双重if判断优化为前置判断,如果根据业务条件判断使用throw或者return

根据场景使用数据类型:例如redis存储值类型,去重选择set类型,部分更新使用map类型

4、数据层优化:

通过EXPLAIN 关键字分析SQL 语句的执行加载顺序、表连接的、索引,选择作为筛选条件的字段作为索引,组合索引遵循

对齐原则,如果中断后面的条件就没办法利用索引,使用单个索引更加灵活,如果有瓶颈要求综合分析使用组合索引

5、系统设计:

对系统关系的设计上,可以通过优化部分字段来达到减少系统之间的交互流程的目的

6、实践经验:

项目中对数据的处理不够熟悉,开发过程中在笔记中沉淀数据处理的常用方法

7、开发意识:

使用日志过程中,在设计日志系统的角度去开发看问题

8、技术方案设计

1)角色分配:分配各个系统的角色,系统负责提供细粒度的高可用基础功能,公共后端负责控制活动定制逻辑(门面模式)

2)减少交互请求:最开始没有考虑到缓存,对于查询接口可以走缓存,更好的处理高并发和提高接口响应

3)边界完善:对失败的场景设计的逐步优化,先判断是否可以助力再发卡,发卡成功后再调用助力接口插入助力记录,这样可以省去助力成功发卡失败需要回滚助力记录的回滚事务;如果发券失败重试3次,3次之后助力失败

4)高可用:根据已有功能来设计技术方案,营销系统提供接口调用规范,保证营销系统的高用性

9、系统开发

1)开闭原则:遵循对修改关闭,对新增开放的原则,例如不修改原本开启助力接口没有非空参数校验,新增结束助力接口新增参数校验

2)减少对数据库的操作:新增结束助力接口中,第一步先使用redis分布式锁控制并发,第二步查询记录是否存在,第三步判断记录中状态是否已经为已结束,第四步对数据库进行助力初始表和助力记录表的更新

3)功能闭环:使用redis分布式锁控制并发,操作完数据库,及时释放redis分布式锁

CodeReview是开发中的重要一个环节,整理了一些关于jupiter for java

什么是代码评审(CodeReview)?

代码评审也称代码复查,是指通过阅读代码来检查源代码与编码标准的符合性以及代码质量的活动。

Jupiter提供了代码行级别的评审批注功能,方便评审参与人了解具体是哪些行代码存在问题。

同时,它也比较符合常规的评审流程,被评审人提供待审代码->评审人线下提出个人意见->组织讨论会讨论每个人提出的意见并确定问题及解决方案->被评审人修改代码->评审人查看修改情况。

Jupiter支持在一个项目中的多次评审,多人协同参与评审,支持多种配置库如SVN、CVS等,支持简单的评审流程,支持问题跟踪。

 

http://files.cnblogs.com/files/nidongde/jupiter_4.0.0.rar

文档描述

 http://files.cnblogs.com/files/nidongde/代码评审工具Jupiter使用流程.rar

 

以上是关于java开发CodeReview的主要内容,如果未能解决你的问题,请参考以下文章

Rails的不同缓存策略

java web开发缓存方案,ehcache和redis哪个更好

玩转iOS开发 - 数据缓存

[Java开发之路](19)Long缓存问题

带有缓存层的 Java 对象引用

Day648.缓存设计问题 -Java业务开发常见错误