2022.06.01熊哥代码Review学习笔记
# 2022.06.01熊哥代码Review学习笔记
一、分块编程思想
说明
分块编程思维,将代码
分块化
优点
- 代码具有封装性
- 思路更为明确,增强可读性
- 编译
Arthas
调试工具调试watch,观察入参/出参/报错等信息调试
实例
以下只是一个简单的例子,无比较真
- 原来
1
2
3
4
5
6
7
8public void updateUser(){
User user = new User();
user.setId(1);
user.setName("阿昌");
user.setAge(23);
Boolean flag = userService.updateByUser(user);
}- 优化思路
将user的参数装填流程封装成一个方法
1
2
3
4
5
6
7
8
9
10
11
12public void updateUser(){
User user = buildUser();
Boolean flag = userService.updateByUser(user);
}
User buildUser(){
User user = new User();
user.setId(1);
user.setName("阿昌");
user.setAge(23);
return user;
}
二、三角形代码
说明
何为三角形?是一种
戏称
;实际上是指你是
if-else战士
,没有说不好,单指代码如果有大量的if-else就会出现可读性下降实例
1 | public void test(User user){ |
优化思路
这里给予一个优化的思路,通过Assert工具类将if-else的括号天堂改写为一行代码,或直接用if+reuturn的方式等..
1
2//Assert
Assert.isTrue();1
2
3
4
5//if+reuturn
public void test(User user){
if(!"阿昌".equals(user.getName())) reutrn;
.....
}
三、确保多线程情况下List的的有序问题
说明
当多线程情况下,请保证遍历逻辑中,List是有序的。
这里列举一个简单的案例,无比较真。假设List中包含1、2、3、4、5个元素,且无序的状态。
在极端高并发场景下,当线程A遍历List先获取到了2进行业务逻辑,结束后是打算获取3进行操作;线程B遍历List先获取到3进行业务逻辑操作,结束后是打算获取2进行操作。
这里的情况将会出现
死锁问题
四、Git冲突代码问题
说明
当合并代码时,以Master为主,合并完Master后,开发分支的代码以拓展功能的维度进行合并
五、CSCD设计架构
说明
这个名字是我零时以层头名第一个字母合在一起组成的,具体的内容我忘记了。
以Controller/Service/Conponent/Dal,4层组成。
Controller
对外暴露路径,对入参校验、模型转换等
Service
具体的业务大模块
Conponent
某个业务大模块下的小组成
Dal
只关注面向数据库层进行数据操作