史蒂夫.喬布斯說,”復雜的終極境界是簡單“,同樣的優雅的代碼一定是精簡明了,可讀性好。
使用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行
-
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-
審核編輯 :李倩
-
代碼
+關注
關注
30文章
4888瀏覽量
70274 -
LOCA
+關注
關注
0文章
11瀏覽量
7225
原文標題:幾個代碼瘦身優化的案例
文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
關于“車圈恒大”,比亞迪回應

AI芯片大賺44億美元!博通Q2營收創新高,凈利潤大增134%

接近物理極限!10kV SiC MOSFET新進展

人形機器人遇阻?特斯拉“擎天柱”項目負責人離職

英偉達H100即將上天!可運轉簡化大模型
軟通動力與Qualsen(高勘技術)達成戰略合作,打造通信行業“啞資源”智能管理新模式
Texas Instruments LMH0044SQ/NOPB 自適應電纜均衡器的參數特性、EDA模型 數據手冊分享

低噪聲放大器前端模塊,帶有 GPS/GNSS 預濾波器 skyworksinc

適用于 WCDMA / LTE 頻段 26、8、12、20、13 和 GSM/EDGE 850/900 MHz 的 SkyOne? Ultra 前端模塊 skyworksinc

用于四頻 GSM / GPRS / EDGE 的 SkyOne? 多模多頻 Tx 前端模塊 – WCDMA / HSPA / HSPA / LTE / CDMA skyworksinc

IOTE 2025上海智能傳感生態研討會 共同探討傳感器行業破局之道
低噪聲放大器前端模塊,帶有 GPS/GNSS/BDS 前濾波器和后置濾波器 skyworksinc

GNSS 低噪聲放大器前端模塊,帶有 GPS/GLONASS/BDS 前置濾波器和后置濾波器 skyworksinc

用于四頻 GSM / GPRS / EDGE 的 Tx-Rx FEM,具有 6 個線性 TRx 開關端口和雙頻 TD-SCDMA skyworksinc

評論