第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用 Stream.ofNullable 處理可空列表是不好的做法嗎

使用 Stream.ofNullable 處理可空列表是不好的做法嗎

精慕HU 2023-06-04 11:16:48
this?using optionals correctly 中的第 12 項(xiàng)不是可選文章狀態(tài)有時(shí),我們傾向于&ldquo;過度使用&rdquo;東西。這意味著我們有一個(gè)東西,比如 Optional,我們到處都能看到它的用例。在 Optional 的情況下,一個(gè)常見的場(chǎng)景涉及鏈接其方法以獲得值的單一目的。避免這種做法并依賴簡(jiǎn)單明了的代碼。也是一樣嗎Stream.ofNullable?我應(yīng)該避免這種情況嗎:Stream.ofNullable(getHandlers(...))? ?.flatMap(Collections::stream)? ?.forEach(handler -> handler.handle(event));贊成這個(gè)?List<Handler> handlers = getHandlers(...)?if (handlers == null) {? ? return; // do nothing}handlers.forEach(handler -> handler.handle(event));
查看完整描述

1 回答

?
溫溫醬

TA貢獻(xiàn)1752條經(jīng)驗(yàn) 獲得超4個(gè)贊

我認(rèn)為“依靠簡(jiǎn)單明了的代碼”的建議在任何地方都是很好的建議,不限于 eitherOptionalStream.ofNullable.

就題中的具體選擇而言:我覺得很難說一個(gè)客觀上比另一個(gè)更簡(jiǎn)單直白。Stream.ofNullable更簡(jiǎn)潔,但需要您知道它的作用;顯式檢查更冗長(zhǎng),但如果您不熟悉s,if可能更容易理解。Stream

當(dāng)向 API 引入新方法時(shí),可以說它在某種意義上“更難”,因?yàn)椴皇煜?API 方法的人會(huì)發(fā)現(xiàn)它更難閱讀,因?yàn)樗麄儾恢涝摲椒ǖ淖饔?。?dāng)然,人們可以反駁說他們應(yīng)該知道,或者應(yīng)該預(yù)料到會(huì)遇到他們不知道的事情。

所以,我基本上是說你應(yīng)該使用你/你的代碼的讀者會(huì)覺得最舒服的那個(gè)。


但是,我認(rèn)為這里不好的做法是getHandlers(...)首先返回 null 。Effective Java中有一項(xiàng)(第 3 版第 54 項(xiàng),第 2 版第 43 項(xiàng))關(guān)于總是返回一個(gè)空列表而不是 null。

此建議在這里非常有效,因?yàn)槟幚砜樟斜淼姆绞脚c處理空列表的方式相同。

這樣做可以讓你寫:

List<Handler> handlers = getHandlers(...);
handlers.stream().forEach(...);

這是客觀上更簡(jiǎn)單的代碼。

我認(rèn)為使用它會(huì)更好:

for (Handler h : getHandlers(...)) {
  // ...
  }

因?yàn)槟梢愿`活地在循環(huán)內(nèi)做更多事情(例如中斷),而無(wú)需使用流(/類似流的方法)。


查看完整回答
反對(duì) 回復(fù) 2023-06-04
  • 1 回答
  • 0 關(guān)注
  • 144 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)