业务类型代码重构求大神指教!!!

kingdom-wj 2019-04-03 11:26:09
项目初期开发周期比较短,上线垒完了代码后发现一个service里面写了接近1500的代码,大多数都是for的业务逻辑,而且自己看的也很头疼,所以想做一下代码重构,但是却无从下手,希望大神们能给点建议,谢谢!!!
代码示例(业务代码不写了,我把代码的基本结构写一下吧):
Event event = null;
for(int i=0;i<list_event.size;i++){
event = list_event.get(i);
int be_sum = 0,af_sum = 0;
List<Double> list_event_emotion = event.getEmotion();
for(int j=0;j<list_event_emotion.size();j++){
if(list_event_emotion.get(j) > 20){
be_sum += 1;
}else{
af_sum += 1;
}
}
然后再根据be_sum和af_sum做一些其他的处理等等
}

就是这么一个结构,现在想把这块的代码重构一下,但是里面的业务都依赖于上面的变量,让我无从下手,该怎么去优化呢???双手合十。。。。
...全文
184 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
十八道胡同 2019-04-03
  • 打赏
  • 举报
回复
引用 7 楼 kingdom-wj 的回复:
[quote=引用 6 楼 朱同学 的回复:] [quote=引用 5 楼 kingdom-wj 的回复:] [quote=引用 1 楼 LCL_data 的回复:] 需要的变量 做参数传入, 然后把结果用返回值返回 呗 比如说list_event 做函数参数传入
谢答,您的意思是把这块for循环的业务单独写一个方法吧。。。这个我也这么干了,但是这个for循环的代码还是有接近100行的代码,很不可读,想着能不能做下优化,头疼中。。。[/quote] 方法里再抽方法[/quote] 恩恩,双手合十感谢,我试试[/quote] 对的,就是方法里面在抽取 小函数来做。 每个函数不应太大,超过20行 就不易读了
kingdom-wj 2019-04-03
  • 打赏
  • 举报
回复
引用 6 楼 朱同学 的回复:
[quote=引用 5 楼 kingdom-wj 的回复:] [quote=引用 1 楼 LCL_data 的回复:] 需要的变量 做参数传入, 然后把结果用返回值返回 呗 比如说list_event 做函数参数传入
谢答,您的意思是把这块for循环的业务单独写一个方法吧。。。这个我也这么干了,但是这个for循环的代码还是有接近100行的代码,很不可读,想着能不能做下优化,头疼中。。。[/quote] 方法里再抽方法[/quote] 恩恩,双手合十感谢,我试试
朱同学 2019-04-03
  • 打赏
  • 举报
回复
引用 5 楼 kingdom-wj 的回复:
[quote=引用 1 楼 LCL_data 的回复:] 需要的变量 做参数传入, 然后把结果用返回值返回 呗 比如说list_event 做函数参数传入
谢答,您的意思是把这块for循环的业务单独写一个方法吧。。。这个我也这么干了,但是这个for循环的代码还是有接近100行的代码,很不可读,想着能不能做下优化,头疼中。。。[/quote] 方法里再抽方法
kingdom-wj 2019-04-03
  • 打赏
  • 举报
回复
引用 1 楼 LCL_data 的回复:
需要的变量 做参数传入, 然后把结果用返回值返回 呗 比如说list_event 做函数参数传入
谢答,您的意思是把这块for循环的业务单独写一个方法吧。。。这个我也这么干了,但是这个for循环的代码还是有接近100行的代码,很不可读,想着能不能做下优化,头疼中。。。
kingdom-wj 2019-04-03
  • 打赏
  • 举报
回复
引用 2 楼 朱同学 的回复:
把service里的逻辑抽取成方法,需要使用的时候直接传参调用方法,做好注释就会很清晰. 这么做还有一个好处是不在循环中声明变量,提高了效率.
谢谢回答,您看看for循环内部有可以优化的点吗?还有您说的逻辑抽象成方法这块,我现在就是把这个for循环作为一个方法,还有其他好的方式吗?
kingdom-wj 2019-04-03
  • 打赏
  • 举报
回复
谢答,您的意思是把这块for循环的业务单独写一个方法吧。。。这个我也这么干了,但是这个for循环的代码还是有接近100行的代码,很不可读,想着能不能做下优化,头疼中。。。
朱同学 2019-04-03
  • 打赏
  • 举报
回复
把service里的逻辑抽取成方法,需要使用的时候直接传参调用方法,做好注释就会很清晰. 这么做还有一个好处是不在循环中声明变量,提高了效率.
十八道胡同 2019-04-03
  • 打赏
  • 举报
回复
需要的变量 做参数传入, 然后把结果用返回值返回 呗 比如说list_event 做函数参数传入
十八道胡同 2019-04-03
  • 打赏
  • 举报
回复
记得结贴。
kingdom-wj 2019-04-03
  • 打赏
  • 举报
回复
引用 8 楼 LCL_data 的回复:
[quote=引用 7 楼 kingdom-wj 的回复:] [quote=引用 6 楼 朱同学 的回复:] [quote=引用 5 楼 kingdom-wj 的回复:] [quote=引用 1 楼 LCL_data 的回复:] 需要的变量 做参数传入, 然后把结果用返回值返回 呗 比如说list_event 做函数参数传入
谢答,您的意思是把这块for循环的业务单独写一个方法吧。。。这个我也这么干了,但是这个for循环的代码还是有接近100行的代码,很不可读,想着能不能做下优化,头疼中。。。[/quote] 方法里再抽方法[/quote] 恩恩,双手合十感谢,我试试[/quote] 对的,就是方法里面在抽取 小函数来做。 每个函数不应太大,超过20行 就不易读了[/quote]
引用 8 楼 LCL_data 的回复:
[quote=引用 7 楼 kingdom-wj 的回复:] [quote=引用 6 楼 朱同学 的回复:] [quote=引用 5 楼 kingdom-wj 的回复:] [quote=引用 1 楼 LCL_data 的回复:] 需要的变量 做参数传入, 然后把结果用返回值返回 呗 比如说list_event 做函数参数传入
谢答,您的意思是把这块for循环的业务单独写一个方法吧。。。这个我也这么干了,但是这个for循环的代码还是有接近100行的代码,很不可读,想着能不能做下优化,头疼中。。。[/quote] 方法里再抽方法[/quote] 恩恩,双手合十感谢,我试试[/quote] 对的,就是方法里面在抽取 小函数来做。 每个函数不应太大,超过20行 就不易读了[/quote] 恩恩,谢谢!

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧