ホームページ  >  記事  >  Java  >  Java コード例の分析

Java コード例の分析

PHPz
PHPz転載
2023-05-10 11:58:061689ブラウズ

1. いくつかの不正行為コードのディレクトリ

1. この方法で StringBuffer を使用する場合の落とし穴は何ですか?

2.これまでに書いた最長のコード行はどのくらいですか? ? ?

3. ループ条件判定、最大何段まで入れ子にできますか?

4.後段のクエリ速度を最適化するために ~ 私にはビジネスの洞察力があります!

5.どのようにして異常者に弄ばれ、その後異常者になったのですか?

6. ストリームは最も再生されているコードであり、それを見た人は皆ショックを受けています。

2. チートコード | この方法で StringBuffer を使用する場合の落とし穴は何ですか?

Java の StringBuffer クラスをこのように使用したことがありますか?

/**   * 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());      }  }

3. 不正行為コード | あなたがこれまでに書いた最長のコード行はどのくらいですか? ? ?

Java コード例の分析

#あなたがこれまでに書いた中で最も長いコード行は何行ですか?なぜそんなに長く書いたのですか?見た目がクールですか? それともコードの行数を減らしたいですか?

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>

上記のコードは複数行に分割して表示されていますが、実質的には 1 行であり、非常に複雑な代入ステートメントです。

この種のコードは、あなたのコーディング スキルを誇示するために、他の人には理解できないようにするためのものですか?

編集者は、Java Stream API とさまざまな関数型プログラミング手法、およびさまざまな構文糖のおかげで、この種の悪質なコードがある程度まで一般的になったと感じています。

それでは、このコードを一緒に批判しましょう。それとも何か良い解決策はありますか?

4. チートコード | ループ条件判定、最大何段まで入れ子にできる?

for ループと if 条件判定文は必須です。しかし、ネストされたループと条件判断を何レベル見たことがありますか?言い換えれば、最大で何レベルのネストを許容できるでしょうか?

Java コード例の分析

まず、極端な不正行為のコードを見てみましょう:

// 这个***循环嵌套,只是总循环的一部分。。。我已经绕晕在黄桷湾立交          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>

5. 不正行為のコード | クエリ速度を最適化するために後期〜かなり商才!

優れたプログラマーとはどのようなプログラマーでしょうか?私たちが顧客向けにシステムを開発するときは、後の最適化のためにいくつかの隠れたポイントを確保します。

これらの埋め込まれたポイントの最適化により、顧客はシステムの動作速度が質的に飛躍したことを即座に感じることができ、同社は第 2 段階の開発契約を締結し、巨額の開発費を回収することができました。

会社から見ると、そのようなプログラマーは優れたプログラマーです。

例:

Java コード例の分析

6. チート コード | どのようにして異常者にプレイされ、その後異常者になったのですか?

Java をプレイする人は、最初にさまざまな例外によって悪用されることになりますが、最も一般的なのは null ポインターです。さらに 2 年間プレイした後、私は異常なプレイをするようになり、あらゆる種類の奇妙で異常なゲームプレイが際限なく出現しました。

次の異常の定義は適切だと思いますか?

/**   * 处理业务的异常   * 居然有一堆静态异常,准备好了随时可以抛??   * 错误码是字符串   */  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方法  }
それが適切でない場合、何が問題ですか?

7. チート コード | ストリームは最も再生されているコードで、見た人は皆ショックを受けています。

Java 8 のハイライトであるストリームは、java.io パッケージの InputStream および OutputStream とはまったく異なる概念です。 Java 8 のストリームは、コレクション オブジェクトの機能を拡張したもので、コレクション オブジェクトに対するさまざまな非常に便利で効率的な集約操作 (集約操作) またはバルク データ操作 (バルク データ操作) の実行に重点を置いています。 Stream API は、新しく登場した Lambda 式の助けを借りて、プログラミングの効率とプログラムの読みやすさを大幅に向上させます。

Java コード例の分析


ストリームの使用状況:

###
//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);                                      });                          }                  );

以上がJava コード例の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。