Rumah > Java > javaTutorial > Analisis contoh kod Java

Analisis contoh kod Java

PHPz
Lepaskan: 2023-05-10 11:58:06
ke hadapan
1754 orang telah melayarinya

1. Direktori beberapa kod penipuan

1.

2. Berapa lama baris kod terpanjang yang pernah anda tulis? ? ?

3. Gelung + pertimbangan bersyarat, paling banyak berapa tahap yang boleh anda sarang?

4. Untuk mengoptimumkan kelajuan pertanyaan di peringkat seterusnya ~ ketajaman perniagaan yang cukup!

5. Bagaimanakah anda dipermainkan oleh anomali dan kemudian menjadi anomali?

6. Strim ialah kod yang paling banyak dimainkan, semua orang yang melihatnya terkejut!

2. Kod penipuan |.

Pernahkah anda menggunakan kelas StringBuffer Java dengan cara ini?

/**   * Create Time 2019/5/24   * StringBuffer追加 如痴如醉的写法   * @author cailong   **/  public class Append {      public static void main(String[] ares){          StringBuffer sb = new StringBuffer();          //这里都能理解          sb.append("<?xml  version=\"1.0\" encoding=\"UTF-8\"?><root>");          for (int i = 0; i " +                      "<nsrsbh>"+i+"</nsrsbh>" +                      "<nsrmc>"+i+"</nsrmc>" +                      "<djxh>"+i+"</djxh>" +                      "<zgswj_dm>"+i+"</zgswj_dm>" +                      "<zgswj_mc>"+i+"</zgswj_mc>" +                      "<sjly>sjzs</sjly>" +                      "<ywsx_dm>"+i+"</ywsx_dm>" +                      "");          }          sb.append("</root>");          System.out.println(sb.toString());      }  }
Salin selepas log masuk

3. Kod menipu |. ? ?

Analisis contoh kod Java

Apakah baris kod terpanjang yang pernah anda tulis? Mengapa anda menulis begitu panjang? Adakah ia kelihatan hebat, atau adakah anda mahu mengurangkan bilangan baris kod?

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());</operationpurchaseinfo>
Salin selepas log masuk

Walaupun kod di atas dibahagikan kepada beberapa baris dan dipaparkan, ia pada asasnya adalah satu baris, pernyataan tugasan yang sangat kompleks!

Adakah kod ini dimaksudkan untuk tidak difahami oleh orang lain untuk menunjukkan kemahiran pengekodan anda?

Editor merasakan bahawa Java Stream API dan pelbagai kaedah pengaturcaraan berfungsi, serta pelbagai gula sintaksis, telah menjadikan kod buruk seperti ini semakin biasa sedikit sebanyak!

Jadi mari kita kritik kod ini bersama-sama, atau adakah anda mempunyai sebarang penyelesaian yang baik?

4. Kod penipuan |

Untuk gelung dan jika pernyataan bersyarat adalah penting. Tetapi berapa banyak tahap gelung bersarang dan pertimbangan bersyarat yang telah anda lihat? Dalam erti kata lain, berapa banyak tahap bersarang yang boleh anda terima paling banyak?

Analisis contoh kod Java

Mari kita lihat kod penipuan yang melampau dahulu:

// 这个***循环嵌套,只是总循环的一部分。。。我已经绕晕在黄桷湾立交          if (recordList.size() > start) {              for (int i = start; i  map = recordList.get(i);                  Map<string> field11 = (Map<string>) map.get("field"); //name -> code                  Map<string> record11 = (Map<string>) map.get("record"); // code -> value                  String catagory1 = map.get("categoryId").toString();                  //  查询***种类型对应的其他类型                  SalaryDataVo ss = JSON.parseObject(JSON.toJSONString(map), SalaryDataVo.class);                  Page page3 = salaryManagerService.getAllRecordsByCondition(ss);                  if (page3.getRecords().size() > 0) {                      List<map>> salaryDataVos = page3.getRecords();                      salaryDataVos = this.reSetMap(salaryDataVos, null, null);                      for (Map<string> map2 : salaryDataVos) {                          Map<string> field2 = (Map<string>) map2.get("field");                          Map<string> record2 = (Map<string>) map2.get("record");                          String catagory2 = map2.get("categoryId").toString();                          List<salarygroupvo> groupList2 = salaryGroupService.getSalaryGroupsItems(this.getUserCorpId(), catagory2);                          for (SalaryGroupVO cc : groupList2) {                              cc.setCode(cc.getParentId() + cc.getCode());                          }                          //计算                          for (Map.Entry<string> entity : field2.entrySet()) {                              String keyName = entity.getKey();                              for (SalaryGroupVO s2 : groupList2) {                                  if ("bigDecimal".equals(s2.getItemType()) && s2.getCode().equals(field2.get(keyName).toString()) && ("部门" != keyName) && ("姓名" != keyName) && StringUtils.isNotEmpty(s2.getItemType())) {                                      if (field11.containsKey(keyName)) {                                          if (field11.containsKey(keyName)) {                                              String code1 = field11.get(keyName).toString();                                              Double newValue = 0.0;                                              Double oldValue = 0.0;                                              if (!record11.get(code1).toString().matches("^[0-9]*$")) {                                                  oldValue = Double.parseDouble(record11.get(code1).toString());                                                  if (record2.containsKey(entity.getValue().toString()) && (!record2.get(entity.getValue().toString()).toString().matches("^[0-9]*$"))) {                                                      String value2 = record2.get(entity.getValue().toString()).toString();                                                      newValue = Double.parseDouble(value2);                                                  }                                                  record11.remove(field11.get(keyName).toString());                                              }                                              if (code1.startsWith(catagory1) || code1.startsWith(catagory2)) {                                                  String co = code1.replace(catagory1, "hz");                                                  field11.put(keyName, co);                                                  record11.put(co, oldValue + newValue);                                              }                                          }                                      } else {                                          String code = entity.getValue().toString();                                          String str = entity.getValue().toString();                                          Object value2 = record2.get(entity.getValue().toString());                                          if (str.startsWith(catagory1) && str.replace(catagory1, "").startsWith("hz")) {                                              code = str.replace(catagory1, "");                                          } else if (str.startsWith(catagory2) && str.replace(catagory2, "").startsWith("hz")) {                                              code = str.replace(catagory2, "");                                          }                                          field11.put(keyName, code);                                          record11.put(code, value2);                                      }                                  }                              }                          }                      }                  }                  List<salarygroupvo> sList = salaryGroupService.getSalaryGroupItemsByParentId(catagory1);                  for (SalaryGroupVO s : sList) {                      if (field11.containsKey(s.getName()) && s.getCode().startsWith("hz")) {                          String k = field11.get(s.getName()).toString();                          field11.put(s.getName(), s.getCode());                          String value = null;                          if (record11.containsKey(k)) {                              value = record11.get(k).toString();                          }                          record11.put(s.getCode(), value);                      }                  }                  resultList.add(map);                  pageInfo.setRecords(resultList);              }          }</salarygroupvo></string></salarygroupvo></string></string></string></string></string></map></string></string></string></string>
Salin selepas log masuk

5 Kod penipuan | peringkat kemudian~ cukup banyak Kepintaran Perniagaan!

Apakah jenis pengaturcara yang merupakan pengaturcara yang baik? Apabila kami membangunkan sistem untuk pelanggan, kami menempah beberapa titik tersembunyi untuk pengoptimuman kemudian.

Dengan mengoptimumkan titik terkubur ini, pelanggan serta-merta dapat merasakan bahawa sistem telah membuat lonjakan kualitatif dalam kelajuan operasi, membolehkan syarikat berjaya menandatangani kontrak pembangunan fasa kedua dan mengutip yuran pembangunan yang besar.

Dari perspektif syarikat, pengaturcara seperti itu adalah pengaturcara yang baik.

Contohnya:

Analisis contoh kod Java

6. Kod penipuan | Bagaimana anda dipermainkan oleh anomali dan kemudian menjadi anomali?

Orang yang bermain Java akan disalahgunakan oleh pelbagai pengecualian pada mulanya, dan penunjuk nol harus menjadi yang paling biasa. Selepas bermain selama dua tahun lagi, saya mula bermain secara tidak normal, dan semua jenis permainan yang aneh dan tidak normal muncul dalam aliran yang tidak berkesudahan.

Adakah anda rasa takrifan anomali berikut sesuai?

/**   * 处理业务的异常   * 居然有一堆静态异常,准备好了随时可以抛??   * 错误码是字符串   */  public class CommandException extends BaseException {    private static final long serialVersionUID = -6354513454371927970L;    public static CommandException PARAM_NULL= new CommandException("Command_assemble_01", "Parameter is Needed But Empty");    public static CommandException DEVID_NULL = new CommandException("Command_assemble_02", "DevId Cannot Be Null");    public static CommandException MDCODE_NULL = new CommandException("Command_assemble_03", "Model Code Cannot Be Empty");    public static CommandException ORDER_NULL = new CommandException("Command_assemble_04", "Order Cannot Be Empty");    public static CommandException TYPE_NULL = new CommandException("Command_assemble_05", "Upstream / Downstream Type Cannot Be Empty");    public static CommandException MENUID_NULL = new CommandException("Command_assemble_06", "Menu Id Cannot Be Null");    public static CommandException CTRLTYPE_NOT_RANGE= new CommandException("Command_assemble_07", "Ctrltype Cannot Be Recognized, Which is not in Range");    public static CommandException CMD_NULL = new CommandException("Command_analyze_01", "CMD Cannot Be Null");    public static CommandException PAYLOAD_NULL = new CommandException("Command_analyze_02", "Payload Cannot Be Null");    public static CommandException FRAMEWORK_FAILED= new CommandException("Command_analyze_03", "Framework Failed to be Checked");    public static CommandException CHECK_FAILED= new CommandException("Command_analyze_04", "Command Failed to be Checked");    public static CommandException CONFIGURE_NOT_EXIST = new CommandException("Command_error_1001", "Configure is not Exist");    public static CommandException REDIS_ERROR = new CommandException("Command_error_1002", "Cache Command in Redis Error", true);    //省略构造函数、get/set方法  }
Salin selepas log masuk

Jika tidak sesuai, apa masalahnya?

7 Kod penipuan |.

Stream, sebagai sorotan Java 8, adalah konsep yang sama sekali berbeza daripada InputStream dan OutputStream dalam pakej java.io. Stream dalam Java 8 ialah peningkatan kepada fungsi objek Koleksi Ia memfokuskan pada melaksanakan pelbagai operasi pengagregatan yang sangat mudah dan cekap (operasi agregat) atau operasi data pukal (operasi data pukal) pada objek pengumpulan. Stream API sangat meningkatkan kecekapan pengaturcaraan dan kebolehbacaan program dengan bantuan ungkapan Lambda yang baru muncul.

Analisis contoh kod Java

Penggunaan strim:

//Stream 用的66的  final EventAction eventAction = redisObj(                  EventActionKey + distributionEventId,                  () -> Optional                          .of(distributionEventId)                          .map(eventId -> {                              final EventActionExample example = new EventActionExample();                              example.createCriteria()                                      .andEventIdEqualTo(eventId)                                      .andTriggerTypeEqualTo(EnumEventTriggerType.DISTRIBUTION_PURCHASE.getCode().byteValue());                              return example;                          })                          .map(eventActionMapper::selectByExample)                          .filter(StringUtil::isNotEmpty)                          .map(e -> e.get(0)).orElseThrow(() -> ExceptionUtil.createParamException("事件触发信息不存在"))                  , EventAction.class);          final AwardConfig awardConfig = redisObj(EventConfigKey + eventAction.getId(),                  () -> Optional.ofNullable(eventAction.getId())                          .map(actionId -> {                              final AwardConfigExample example = new AwardConfigExample();                              example.createCriteria()                                      .andActionIdEqualTo(actionId);                              return example;                          })                          .map(awardConfigMapper::selectByExample)                          .filter(StringUtil::isNotEmpty)                          .map(e -> e.get(0)).orElseThrow(() -> ExceptionUtil.createParamException("xxx")),                  AwardConfig.class          );          Optional.of(req)                  .map(e -> e.clueUid)                  .map(id -> {                      final ClueExample example = new ClueExample();                      example.createCriteria()                              .andClueUidEqualTo(id)                              .andDeletedEqualTo(false)                              .andReceivedEqualTo(false)                              .andCreateTimeGreaterThan(now - cluetime);                      example.setOrderByClause("create_time asc");                      return example;                  })  // 获取该被邀请人所有未过期且未被领取的线索的线索                  .map(clueMapper::selectByExample)                  .filter(StringUtil::isNotEmpty)                  .ifPresent(clues -> {                              final ClueResp clueResp = Optional.of(req)                                      .filter(c -> {                                          c.count = clues.size();                                          return true;                                      })                                      .map(this::awardValue)                                      .orElseThrow(() -> ExceptionUtil.createParamException("参数错误"));                              final Integer specialId = req.getIsHead()                                      ? clues.get(0).getId()                                      : clues.get(clues.size() - 1).getId();                              clues.stream()                                      .peek(clue -> {                                          final AwardConfig awardConfigclone = Optional.of(awardConfig)                                                  .map(JSONUtil::obj2Json)                                                  .map(json -> JSONUtil.json2Obj(json, AwardConfig.class))                                                  .orElseGet(AwardConfig::new);                                          awardConfigclone.setMoney(                                                  Optional.of(clue.getId())                                                          .filter(specialId::equals)                                                          .map(e -> clueResp.specialReward.longValue())                                                          .orElse(clueResp.otherAverageReward.longValue())                                          );                                          eventActionService.assembleAward(                                                  awardConfigclone,                                                  clue.getAdviserUid(),                                                  clue.getAdviserUid(),                                                  clue.getClueUid(),                                                  eventAction,                                                  new PasMessageParam(),                                                  clue.getId(),                                                  AwardRelationType.Clud.code()                                          );                                      })                                      .forEach(clue -> {                                          clue.setOrderNo(req.orderNo);                                          clue.setCommodityName(req.commodityName);                                          clue.setOrderAmount(req.orderAmount);                                          clue.setReceived(true);                                          clue.setModifyTime(now);                                          clueMapper.updateByPrimaryKeySelective(clue);                                      });                          }                  );
Salin selepas log masuk

Atas ialah kandungan terperinci Analisis contoh kod Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan