<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          幾個代碼瘦身優(yōu)化的案例

          共 3123字,需瀏覽 7分鐘

           ·

          2022-07-05 15:30

          史蒂夫.喬布斯說,”復雜的終極境界是簡單“,同樣的優(yōu)雅的代碼一定是精簡明了,可讀性好。

          使用LocalDate和LocalDateTime

          LocalDate精確到日期,LocalDateTime精確到時分秒。優(yōu)化前14行代碼

          1. try {

          2.    SimpleDateFormat sdfDay = new SimpleDateFormat("yyyy-MM-dd");

          3.    SimpleDateFormat sdfMins = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

          4.    Date now = new Date();

          5.    String today = sdfDay.format(now);

          6.    String waterStart = today + " 03:00:00";

          7.    String waterEnd = today + " 04:00:00";

          8.    Date waterStartTime = sdfMins.parse(waterStart);

          9.    Date waterEndTime = sdfMins.parse(waterEnd);

          10. } catch (ParseException pe) {

          11.    return XX;

          12. }

          優(yōu)化后3行代碼

          1. LocalDateTime now = LocalDateTime.now();

          2. LocalDateTime waterStart = LocalDateTime.of(now.getYear(), now.getMonth(),now.getDayOfMonth(),3,0);

          3. LocalDateTime waterEndTime =LocalDateTime.of(now.getYear(), now.getMonth(),now.getDayOfMonth(),4,0);

          默認值使用Optional

          優(yōu)化前五行

          1. if (null == status) {

          2.    param.put("status", new ArrayList<String>());

          3. } else {

          4.    param.put("status", status);

          5. }

          優(yōu)化后一行,使用JDK8的Optional

          1. Optional.ofNullable(status).orElse(new ArrayList<String>());

          如果是字符串可以用

          1. StringUtils.defaultIfEmpty(status,"")

          字符串累加

          字符串只要不在for循環(huán)里累加,可以直接用+號,因為編譯成字節(jié)碼后會變成StringBuilder,如果在for循環(huán)里面用+號會生成多個StringBuilder,所以在for循環(huán)里累加最好在循環(huán)外創(chuàng)建StringBuilder。優(yōu)化前五行

          1. StringBuffer sblog = new StringBuffer();

          2. sblog.append("waterDriven|sellerId=");

          3. sblog.append(request.getSellerTaobaoId());

          4. sblog.append("|result=");

          5. sblog.append(isSuccess);

          優(yōu)化后一行

          1. String sblog="waterDriven|sellerId="+request.getSellerTaobaoId()+"|result="+isSuccess;

          以上場景用逗號和等號連接數(shù)據(jù),使用GUAVA的Joiner更精簡,可讀性更好

          1. String sblog=Joiner.on("|").withKeyValueSeparator("=").join(ImmutableMap.of("sellerId", request.getSellerTaobaoId(), "result", isSuccess))

          LIST TO MAP

          優(yōu)化前4行

          1. Map<String, String> AssetsMetaIdMap = Maps.newHashMap();

          2. for (AssetsInfoBO assetsInfoBO : request.getAssetsCollectionList()) {

          3.    AssetsMetaIdMap.put(assetsInfoBO.getAssetMetadataId(), assetsInfoBO.getAssetMetadataId());

          4. }

          優(yōu)化后1行

          1. Map<String, String> AssetsMetaIdMap = request.getAssetsCollectionList().stream().collect(Collectors.toMap(Hosting::getAssetMetadataId, Hosting::getAssetMetadataId));

          如果key重復會拋出異常

          1. Exception in thread "main" java.lang.IllegalStateException: Duplicate key 80000

          減少不需要的判斷

          優(yōu)化前5行

          1. String requestId = null;

          2. if (null != request.getExtData()) {

          3.    requestId = request.getExtDataValue(REQUEST_ID_KEY);

          4. }

          5. return requestId;

          優(yōu)化后1行

          1. return request.getExtDataValue(REQUEST_ID_KEY);

          去掉else

          優(yōu)化前5行

          1. if (null != result &amp;&amp; StringUtils.isNotBlank(no)) {

          2.     return no;

          3. } else {

          4.     throw new RuntimeException("XX");

          5. }

          優(yōu)化后4行

          1. if (null != result &amp;&amp; StringUtils.isNotBlank(no)) {

          2.     return no;

          3. }

          4. throw new RuntimeException("XX");

          不要返回布爾

          優(yōu)化前5行

          1. if ("true".equalsIgnoreCase(value.toString())) {

          2.    invoke = true;

          3. } else {

          4.    invoke = false;

          5. }

          優(yōu)化后一行

          1. invoke = "true".equalsIgnoreCase(value.toString());

          使用級聯(lián)

          優(yōu)化前5行

          1. ParamBO paramBO = new ParamBO();

          2. paramBO.setId(1);

          3. paramBO.setName(”ifeve“);

          4. paramBO.setOld(7);

          優(yōu)化后1行

          1. new ParamBO().withId(1).withName("ifeve").withOld(7);


          瀏覽 24
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  高清在线视频一区 | 亚洲综合色网 | 蘑菇视频 成人精品战指 | 黑人蜜桃2黑人 | 欧美操嫩逼 |