史蒂夫.喬布斯說,”復雜的終極境界是簡單“,同樣的優雅的代碼一定是精簡明了,可讀性好。
使用LocalDate和LocalDateTime
LocalDate精確到日期,LocalDateTime精確到時分秒。優化前14行代碼
-
try {
-
SimpleDateFormat sdfDay = new SimpleDateFormat("yyyy-MM-dd");
-
SimpleDateFormat sdfMins = new SimpleDateFormat("yyyy-MM-dd HHss");
-
Date now = new Date();
-
String today = sdfDay.format(now);
-
String waterStart = today + " 0300";
-
String waterEnd = today + " 0400";
-
Date waterStartTime = sdfMins.parse(waterStart);
-
Date waterEndTime = sdfMins.parse(waterEnd);
-
} catch (ParseException pe) {
-
return XX;
-
}
優化后3行代碼
-
LocalDateTime now = LocalDateTime.now();
-
LocalDateTime waterStart = LocalDateTime.of(now.getYear(), now.getMonth(),now.getDayOfMonth(),3,0);
-
LocalDateTime waterEndTime =LocalDateTime.of(now.getYear(), now.getMonth(),now.getDayOfMonth(),4,0);
默認值使用Optional
優化前五行
-
if (null == status) {
-
param.put("status", new ArrayList<String>());
-
} else {
-
param.put("status", status);
-
}
優化后一行,使用JDK8的Optional
-
Optional.ofNullable(status).orElse(new ArrayList<String>());
如果是字符串可以用
-
StringUtils.defaultIfEmpty(status,"")
字符串累加
字符串只要不在for循環里累加,可以直接用+號,因為編譯成字節碼后會變成StringBuilder,如果在for循環里面用+號會生成多個StringBuilder,所以在for循環里累加最好在循環外創建StringBuilder。優化前五行
-
StringBuffer sblog = new StringBuffer();
-
sblog.append("waterDriven|sellerId=");
-
sblog.append(request.getSellerTaobaoId());
-
sblog.append("|result=");
-
sblog.append(isSuccess);
優化后一行
-
String sblog="waterDriven|sellerId="+request.getSellerTaobaoId()+"|result="+isSuccess;
以上場景用逗號和等號連接數據,使用GUAVA的Joiner更精簡,可讀性更好
-
String sblog=Joiner.on("|").withKeyValueSeparator("=").join(ImmutableMap.of("sellerId", request.getSellerTaobaoId(), "result", isSuccess))
LIST TO MAP
優化前4行
-
Map<String, String> AssetsMetaIdMap = Maps.newHashMap();
-
for (AssetsInfoBO assetsInfoBO : request.getAssetsCollectionList()) {
-
AssetsMetaIdMap.put(assetsInfoBO.getAssetMetadataId(), assetsInfoBO.getAssetMetadataId());
-
}
優化后1行
-
Map<String, String> AssetsMetaIdMap = request.getAssetsCollectionList().stream().collect(Collectors.toMap(Hosting::getAssetMetadataId, Hosting::getAssetMetadataId));
如果key重復會拋出異常
-
Exception in thread "main" java.lang.IllegalStateException: Duplicate key 80000
減少不需要的判斷
優化前5行
-
String requestId = null;
-
if (null != request.getExtData()) {
-
requestId = request.getExtDataValue(REQUEST_ID_KEY);
-
}
-
return requestId;
優化后1行
-
return request.getExtDataValue(REQUEST_ID_KEY);
去掉else
優化前5行
-
if (null != result && StringUtils.isNotBlank(no)) {
-
return no;
-
} else {
-
throw new RuntimeException("XX");
-
}
優化后4行
-
if (null != result && StringUtils.isNotBlank(no)) {
-
return no;
-
}
-
throw new RuntimeException("XX");
不要返回布爾
優化前5行
-
if ("true".equalsIgnoreCase(value.toString())) {
-
invoke = true;
-
} else {
-
invoke = false;
-
}
優化后一行
-
invoke = "true".equalsIgnoreCase(value.toString());
使用級聯
優化前5行
-
ParamBO paramBO = new ParamBO();
-
paramBO.setId(1);
-
paramBO.setName(”ifeve“);
-
paramBO.setOld(7);
優化后1行
-
new ParamBO().withId(1).withName("ifeve").withOld(7);
-End-
審核編輯 :李倩
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
原文標題:幾個代碼瘦身優化的案例
文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉載請注明出處。
相關推薦
作者:DigiKey Editor 在許多嵌入式系統中,必須采用嵌入式機器學習(Embedded Machine Learning)技術,這是指將機器學習模型部署在資源受限的設備(如微控制器、物聯網設備和智能傳感器)上,這些設備通常具有有限的計算能力、存儲空間和功耗。本文將您介紹嵌入式機器學習的應用特性,以及常見的機器學習開發軟件與開發環境。 嵌入式機器學習的應用特性與優勢 由于嵌入式設備通常要求極低的功耗,以延長電池壽命,這對于邊緣設備特別重要,且嵌入
發表于 01-25 17:05
?10次閱讀
作者:Bill Schweber 投稿人:DigiKey 北美編輯 2024-11-07 光電 (PE) 傳感器因其高效、耐用和清晰的工作原理,已廣泛用于生產、工業和商業系統中的非接觸式接近檢測。典型應用包括檢測高速生產線上的瓶子或罐子、查看運輸箱內是否有包裹、檢查門是否打開或關閉,或人的存在檢測。 PE 接近傳感器可以設計成不同的光學檢測模式,基本的逆反射方法是一種典型排列方式。盡管 PE 傳感器的工作原理很簡單,但在設置時可能需要大量時間進行試錯,以便根據應
發表于 01-25 17:02
?11次閱讀
作者: DWARAKAN RAMANATHAN 什么是雙向晶閘管? TRIAC可以擴展為交流三極管。 TRIAC 用于控制交流電源,因為一旦開啟,TRIAC 就可以雙向導電,這與 MOSFET 或 IGBT 等其他晶體管不同。 TRIAC 是一種三端子半導體開關器件,包括主端子 1、主端子 2 和柵極端子。它們可以在柵極信號(正和負)的情況下導電。 TRIAC 是一種簡單的開關器件,可以在交流柵極信號上工作,與其他晶體管不同,因為 TRIAC 是通過組合兩個晶體管并連接其柵極端子而制成的。看看下圖就可以
發表于 01-25 16:57
?12次閱讀
作者:Art Pini 投稿人:DigiKey 北美編輯 2024-11-08 機電系統將電機、壓縮機、泵、傳感器、執行器和控制電子裝置等設備的電氣和機械組件組合在一起,廣泛用于制造、航空航天、汽車、醫療和機器人等領域。這些設備必須進行電氣和機械試驗和監控,才能確保正常運行。 為了獲得準確可靠的數據,所使用的必要設備必須與受試設備和試驗方法或程序兼容。試驗設備必須能處理多個模擬和數字輸入/輸出 (I/O) 通道,以對這些設備進行測量和控制,同時還要
發表于 01-25 16:57
?11次閱讀
作者:Aiden Warne 低通和高通濾波器簡介 低通和高通濾波器廣泛應用于電氣工程領域。例如,這些低通和高通濾波器可用于音頻處理、圖像處理、通信系統,有時還可以用于生物醫學信號處理。這些過濾器的作用正如其名稱所示。它們可以濾除高頻并讓低頻通過,也可以做相反的事情,濾除低頻并讓高頻通過。在這篇博客中,我將找到我正在使用的組件的給定高通和低通濾波器電路的波形。構建電路后,我將比較頻率信號的波形與電路元件的波形,看看它
發表于 01-25 16:55
?11次閱讀
設計電子產品 USB 功能的工程指南 作者: Shawn Wasserman 任何 20 世紀 90 年代見過(或設計過)消費電子產品的工程師都知道,沒有標準數據和電源連接的年代是多么痛苦。在這個“前”通用串行總線 (USB) 時代,你的抽屜里不得不裝滿各種形狀和尺寸的電纜。 USB-C 插座連接器。(圖片:DigiKey、Amphenol ICC) 通用串行總線 (USB) 稱呼中使用“通用”一詞可能會讓人覺得名不副實,畢竟可用選擇還是有那么多。但在 USB 誕生之前,每家公司和每種型號都有專有的
發表于 01-25 16:53
?11次閱讀
作者: Shawn Wasserman 有助于產品說同一種語言的硬件和軟件 當工程師設計最新、最優的消費類電子設備時,兼容性就成了一個重要的話題,盡管這個話題很詭譎。[如果您讀過我以前的 DigiKey 博客] ,就會知道我是向后兼容的支持者,也是格式戰的批評者。不過我也明白,關于生態系統的工程討論往往歸結為預算、技術、硬件、物流、編程、知識產權和規劃。以 Chromecast、Airplay、藍牙和 Wi-Fi 為代表的無線通信就是很好的例子。 兼容 802.11 a/b/g/n/ac、藍牙
發表于 01-25 16:53
?11次閱讀
作者:Jeff Shepard 投稿人:DigiKey 北美編輯 2024-11-12 在物流、制造、采礦、運輸、農業和其他行業中,運動監測和位置傳感器可用于避免碰撞、確保安全并提高生產率。這些傳感器可安裝在車輛上,也可以放置于關鍵固定位置。 傳感器必須能夠根據特定的應用需求進行配置,并具有多功能感測能力,包括基于距離、角度位置和速度的物體檢測。在繁忙或復雜的環境中,需要有同時探測多個目標的能力。 對于像裝卸月臺和叉車速度控制這類應用,采用不受
發表于 01-25 16:51
?12次閱讀
作者:Jeff Shepard 投稿人:DigiKey 北美編輯 2024-11-13 在工廠和物流設施中部署協作機器人、自主移動機器人 (AMR) 和自動導引車 (AGV) 時,安全至關重要。這是一個復雜、多維的系統, 需要根據國際標準化組織 (ISO) 13849、國際電工委員會 (IEC) 62061 和 IEC 61800-5-2 標準對機器移動進行監測和控制,而這些標準為控制系統 (SRP/CS) 安全相關部件的設計和整合原則提供了安全要求和指導。 要確保協作機器人、AMR、AGV 和類似設備的安全運行,通常需要建立一個分層的安
發表于 01-25 16:49
?12次閱讀
作者:Kenton Williston 投稿人:DigiKey 北美編輯 純電動汽車 (EV) 和混合動力電動汽車 (HEV) 的設計者需要滿足對更高性能、更快充電速度和更高效率的需求。在有助于滿足這些需求的許多電子功能中,用于實現最佳功率控制的電壓精確檢測功能就是其中之一。 然而,汽車應用尤其具有挑戰性。盡管存在極端溫度和需要適當隔離的高電壓,但電力電子設備或器件仍必須可靠地運行數十年。這些應用的電壓檢測電路必須具有高帶寬、小誤差、小漂移以及高共模瞬
發表于 01-25 16:47
?13次閱讀
作者:Jeff Shepard 投稿人:DigiKey 北美編輯 在下一代工業 4.0 制造、金屬與基礎材料加工、礦物提煉與采礦以及像飲用水和污水處理廠之類關鍵基礎設施中,都需要能夠最大限度地提高機器恢復能力和正常運行時間的智能電機控制裝置。 這些應用中的電機控制裝置必須能夠控制并保護 75 馬力 (HP) 至 700 馬力的電機。為實現彈性運行,需要對機器進行全方位的保護,包括過載保護、接地故障保護和相位不平衡保護等。 同時還應包括觸點磨損自診斷和線圈過
發表于 01-25 16:40
?43次閱讀
作者:Steven Keeping 投稿人:DigiKey 北美編輯 設計一個使用交流電或電池供電的電源非常復雜。設計人員必須開發出一種解決方案,既能在不同負載下提供穩定的電壓和電流,又能高效運行,以最大限度降低功耗。而且當電源用于醫療產品時,由于電磁兼容性 (EMC)、與病人電氣接觸的嚴格安全要求以及電磁干擾 (EMI) 保護等原因,設計會變得更加復雜。 對于從頭開始開發醫療電源的設計人員來說,要滿足這些要求可謂是費錢又費時。商用模塊化 DC/DC 轉換器
發表于 01-25 16:36
?30次閱讀
作者: Don Johanneck 簡介 無線電控制 (RC) 板載電源系統在過去是非常基本的系統,其組件只包括一個接收器和一些由鎳鎘 (NiCad) 電池供電的伺服機構。然后,隨著電機的引入和其他電力需求的增加,RC 系統發生了很大變化。本篇博客將解釋現代 RC 電源系統中使用的術語和組件及其常見配置方式。 接收器 RC 接收器 (RX) 有兩個作用。首先,解析來自發射器的信號,并將數據導向正確的通道。其次是提供電源軌,為各種伺服機構或使用伺服通道的其他外圍設備
發表于 01-25 15:49
?23次閱讀
2024-12-10 人工智能(AI)和傳感器的結合在多個領域有廣泛應用和迅速的發展,特別是在自動化、物聯網(IoT)、醫療、智能城市以及工業4.0等領域。傳感器的功能是收集環境中的物理數據,例如溫度、壓力、光線、聲音、加速度等,而人工智能則用來分析和處理這些數據,從而做出智能決策或自動反應。 此外,Edge AI結合傳感器的應用技術正快速發展,推動多個領域的創新與進步。像是智能監測與預測維護應用、智能城市中的邊緣計算、自動駕駛與ADA
發表于 01-25 15:46
?36次閱讀
作者:Art Pini 投稿人:DigiKey 北美編輯 包括電動汽車 (EV) 以及工業和電信系統在內的各種應用對電子產品的電源要求在不斷提高,所有這些應用都需要經久耐用、性能可靠的連接器。在配電方面尤其如此。設計人員需要的大功率連接器不僅能保持大功率完整性,還能在位置數量、觸點配置和端接方面具有靈活性。 D-sub 連接器可能是電子產品中最常用的多針連接器,可滿足電源系統的許多要求。這種連接器具有各種配置,可適合數以千計的應用。隨著功率
發表于 01-25 15:41
?32次閱讀
評論