你寫過的最長的一行代碼有多長嗎?你為什麼要寫這麼長?是看著帥呢,還是想減少代碼行數?
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
[admin
]