代码重构:循环语句(Loops)

举报
孙小北 发表于 2022/04/29 23:29:08 2022/04/29
【摘要】 什么是循环语句(Loops)定义:针对集合或数组进行简单过滤、分组、映射、遍历操作,采用传统for循环语句进行遍历影响:影响代码复杂度,代码不够简洁、直观,不容易理解代码意图。改进目标:针对可以使用stream替代的for循环,使用stream替代,简化代码方法:针对集合或数组过滤、映射、去重、查找、统计使用stream替代注:并非所有for循环都是坏味道。for循环作为极其常见的语法,本...

什么是循环语句(Loops)

  • 定义:针对集合或数组进行简单过滤、分组、映射、遍历操作,采用传统for循环语句进行遍历

  • 影响:影响代码复杂度,代码不够简洁、直观,不容易理解代码意图。

  • 改进目标:针对可以使用stream替代的for循环,使用stream替代,简化代码

  • 方法:针对集合或数组过滤、映射、去重、查找、统计使用stream替代

  • 注:并非所有for循环都是坏味道。for循环作为极其常见的语法,本身没有问题,只是有些对集合、数组遍历的操作,for循环实现比较复杂,可以使用更简洁的stream表达式进行替换

案例

  • 代码背景:现有一堆苹果,需要调查不同种类的苹果的平均重量。

  • 症状/问题:采用传统循环方法:1次循环进行分组;2层循环求平均重量
    代码复杂度高,需要多次循环嵌套完成,需要10+行代码完成

  • 重构目标:采用Stream方法使代码更简洁
    image-20220429183836820.png

  • 改进目标:原有方案:传统循环,新方案:采用stream

image-20220429183929725.png

  • 采用stream替代循环,只需提供相应的lambda表达式和函数即可,代码简洁

相关技巧

  • 排查方法:搜索+人工判断
    1、IDEA中全局搜索for循环代码
    2、选中for代码,按下Alt+Enter键识别是否可自动重构
    3、人工判断针对数组、集合遍历操作,是否包含过滤、分组、映射、匹配等基本功能

image-20220429184014214.png

总结

image-20220429184023942.png

  • 并非所有for循环都是坏味道。for循环作为极其常见的语法,本身没有问题,只是有些对集合、数组遍历的操作,for循环实现比较复杂,可以使用更简洁的stream表达式进行替换
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。