降低代码的复杂性

Shi*_*rty 3 java sonarlint

我使用下面的代码,并根据逻辑使用了两个continue语句,但声纳列表显示了此问题 Reduce the total number of break and continue statements in this loop to use at most one.

如何解决这个问题?

for (HashMap<String, String> objRequestIdVO : pObjTicketId) {
    List<TicketDetailsDO> objTicketDetailslist = storeManagerDao.getTicketDetailsWithTicketId(objRequestIdVO.get("requestId"));
    if (null == objTicketDetailslist || objTicketDetailslist.isEmpty()) {
        continue;
    }

    Integer iDesiredDsicount = objTicketDetailslist.get(0).getDesiredDiscount();
    String iSubDept = objTicketDetailslist.get(0).getSubdeptTicket().getSubDeptId();
    List<MCouponDO> objMCounponList = storeManagerDao.getMcouponData(iDesiredDsicount, iSubDept);

    if (null == objMCounponList || objMCounponList.isEmpty()) {
        continue;
    }

    String strHeader = objMCounponList.get(0).getHeader();
    objHeaderVO = new HeaderVO();
    objHeaderVO.setHeader(strHeader);
    objHeaderVO.setRequestId(objRequestIdVO.get("requestId"));
    objHeaderVOList.add(objHeaderVO);
}
Run Code Online (Sandbox Code Playgroud)

Jai*_*ash 5

将null检查继续更改为非null检查并继续。仅当非空检查通过时,该代码才会执行​​,这与说空时继续执行相同。

for (HashMap<String, String> objRequestIdVO : pObjTicketId) {
    List<TicketDetailsDO> objTicketDetailslist = storeManagerDao.getTicketDetailsWithTicketId(objRequestIdVO.get("requestId"));
    if (!(null == objTicketDetailslist || objTicketDetailslist.isEmpty())) {
        Integer iDesiredDsicount = objTicketDetailslist.get(0).getDesiredDiscount();
        String iSubDept = objTicketDetailslist.get(0).getSubdeptTicket().getSubDeptId();
        List<MCouponDO> objMCounponList = storeManagerDao.getMcouponData(iDesiredDsicount, iSubDept);
        if (!(null == objMCounponList || objMCounponList.isEmpty()) {
            String strHeader = objMCounponList.get(0).getHeader();
            objHeaderVO = new HeaderVO();
            objHeaderVO.setHeader(strHeader);
            objHeaderVO.setRequestId(objRequestIdVO.get("requestId"));
            objHeaderVOList.add(objHeaderVO);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 我认为继续使用更好。 (2认同)
  • 请正确缩进您的代码。就可读性而言,错误的缩进比几个“ continue”语句糟糕得多。 (2认同)