你寫過的最長的一行代碼有多長嗎?你爲什麼要寫這麼長?是看着帥呢,還是想減少代碼行數?
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
ps:在活動期間參與投稿每天都有機會獲得程序員必備到霸王防脫洗髮液+頭皮營養液(程序員專屬套裝)噢