你写过的最长的一行代码有多长吗?你为什么要写这么长?是看着帅呢,还是想减少代码行数?
List<OperationPurchaseInfo> purchaseInfoList = sheet.getPurchaseInfoList().stream().filter(purchaseInfo -> purchaseInfo.getExteriorOperation().getExteriorPart().getExteriorOperationList().stream() .filter(exteriorOperation -> exteriorOperation.getProcessState().equals(ExteriorOperation.ProcessState.PROCESSING)).count() != 0 //订单明细中工序对应的工件下的其他工序存在加工中,且已发给供应商且供应商不是当前订单供应商时,需要判断 && (purchaseInfo.getExteriorOperation().getExteriorPart().getTeamwork() == null || !purchaseInfo.getExteriorOperation().getExteriorPart().getTeamwork().equals(sheet.getTeamwork())) ).collect(Collectors.toList());
上面这段代码虽然被拆开多行显示,但本质上是一行,一个极其复杂的赋值语句!
这种代码是不是为了让别人看不懂来彰显自己的编码水平呢?
小编觉得 Java Stream API 以及各种函数式编程方法,以及各种语法糖在某种程度让这种糟糕代码越来越多!
那么一起来批判一下这个代码,或者你有什么好的解决方案呢?
到下面链接发表评论,领取奖品:
https://gitee.com/oschina/bullshit-codes/blob/master/java/ShortIsRight.java
码云 6 周年,我们正在征集各种坑爹代码,很多奖品等你来拿
详细的参与方法请看 https://gitee.com/oschina/bullshit-codes