Skip to content

对象参数校验的花式写法

原文 PDF:cleancode/对象参数校验的花式写法.pdf(已转文字 + 提取配图)

正文

2023/4/12 01:31

                                                  2021-11-30 09:27



                                                

                                                # 1 # 1 # 1



                                                  



                                               

                                               

                                               

                                               

                                               



                                                



                                                 2.1

                                                         facadeImpl&controller



                                               facadeImpl



                                                 public class TradeFacadeImpl{

                                                  //     -- 1



                                                  public String createTradeOrder(TradeOrderDto tradeOrder){



                                                        if(tradeOrder.sellerId == null || tradeOrder.sellerId <=0L){

                                                         return " ID            ";



                                                      }



                                                  }



                                                  //--2



                                                  public ResultDataDto createTradeOrder(TradeOrderDto tradeOrder){



                                                        if(tradeOrder.sellerId == null || tradeOrder.sellerId <=0L){

                                                         return ResultDataDto.fail(500," ID  ");



                                                      }



                                                  }



                                                     //--3



                                                  public ResultDataDto createTradeOrder(TradeOrderDto tradeOrder){



                                                        if(tradeOrder.sellerId == null || tradeOrder.sellerId <=0L){

                                                         throw new CheckParamException(" ID  ");



                                                      }



                                                  }



                                               }



                                               controllercontroller

                                               

                                               



                                               2.2 DTO,VO



                                                                          TradeFacadeImpl 

                                               createTradeOrder

https://mp.weixin.qq.com/s/-zsvEnx8ulO9EH0T3XfKqw 1/7

2023/4/12 01:31

                                                 public class TradeFacadeImpl{

                                                  //     -- 1



                                                  public String createTradeOrder(TradeOrderDto tradeOrder){



                                                      String checkResult = tradeOrder.check();



                                                      if(checkResult != null && checkResult !=""){



                                                         return checkResult;



                                                      }



                                                  }



                                                  //--2



                                                      public ResultDataDto createTradeOrder(TradeOrderDto tradeOrder){

                                                             ResultDataDto checkResult = tradeOrder.check();

                                                             if(!checkResult.isSuccess()){

                                                                    return checkResult;

                                                             }



                                                      }

                                               }

                                               public class TradeOrderDto{



                                                      private Long sellerId;



                                                  private String sellerName;



                                                  private String customerId;



                                                  private String customerName;



                                                  //1



                                                  public String check(){



                                                      if(this.sellerId == null || this.sellerId <= 0L){

                                                           return " ID

                                                                                ";

                                                          //return "sellerId

                                                                                    ";

                                                            //return " ID sellerId

                                                                                        ";



                                                      }



                                                      return "success";



                                                      //return null;



                                                  }



                                                  //2



                                                  public ResultDataDto check(){



                                                      if(this.sellerId == null || this.sellerId <= 0L){

                                                           return ResultDataDto.fail(500," ID

                                                                                                    ");

                                                          //return ResultDataDto.fail(500,"sellerId

                                                                                                         ");

                                                            //return ResultDataDto.fail(500," ID sellerId

                                                                                                                        ");



                                                      }



                                                      return ResultDataDto.success();



                                                  }



                                               }



                                               DTO,VO



                                               2.3 AOP



                                               AOPTradeFacadeImplcreateTradeOrder

https://mp.weixin.qq.com/s/-zsvEnx8ulO9EH0T3XfKqw 2/7

2023/4/12 01:31

                                                  public class TradeFacadeImpl{     dto

                                                  //     -- 1--



                                                  public TradeOrderDto createTradeOrder(TradeOrderDto tradeOrder){



                                                      String checkResult = tradeOrder.check();



                                                      if(checkResult != null && checkResult !=""){



                                                         return checkResult;



                                                      }



                                                  }



                                                  //--2--



                                                      public ResultDataDto createTradeOrder(TradeOrderDto tradeOrder){

                                                             ResultDataDto checkResult = tradeOrder.check();

                                                             if(!checkResult.isSuccess()){

                                                                    return checkResult;

                                                             }



                                                      }

                                               }



                                               public class TradeOrderDto{

                                                      @NotNull()

                                                      private Long sellerId;



                                                  @NotNull()

                                                  private String sellerName;



                                                  private String customerId;



                                                      private String customerName;

                                               }



                                               public class ParamCheckAspect{



                                                    // FacadeImpl



                                                      @Pointcut("execution(public * com.spring.aop.*FacadeImpl.*(..))")

                                                      private void pointCut(){};



                                                  //1--



                                                      @Before(value = "pointCut()")

                                                      public void logStart(JoinPoint joinpoint) {



                                                      //



                                                             Object obj = point.getArgs()[0];

                                                             Class clazz = obj.getClass();

                                                             Field[] fields = clazz.getDeclaredFields();

                                                             for (Field field : fields){



                                                                    field.setAccessible(true);

                                                                    //field Annotation check

                                                                    //field Value Check



                                                                     //throw new RuntimeException(String.format(" %s

                                               ",field.getName));



                                                      }



                                                  }



                                                  //2--



                                                  @Around(value = "pointCut()")

                                                  public ResultDataDto logStart(JoinPoint joinpoint) {



                                                     //



                                                         Object obj = point.getArgs()[0];

                                                         Class clazz = obj.getClass();

                                                         Field[] fields = clazz.getDeclaredFields();

                                                         boolean check=false;

                                                         for (Field field : fields){



                                                                field.setAccessible(true);

                                                                //field Annotation check

                                                                //field Value Check



                                                      }



                                                       if(!check){

                                                         return ResultDataDto.fail(500,"            ");



                                                      }



                                                      point.proceed(args);



                                                  }



                                               }



                                               2.4 Validator



                                               

                                               TradeFacadeImpl

https://mp.weixin.qq.com/s/-zsvEnx8ulO9EH0T3XfKqw 3/7

2023/4/12 01:31

                                               @Service

                                               public class TradeFacadeImpl{



                                                      @Autowired

                                                      private TradeValidator tradeValidator;



                                                  //--1



                                                      public String createTradeOrder(TradeOrderDto tradeOrder){

                                                             String checkResult = tradeValidator.check(tradeOrder);

                                                             if(checkResult != null && checkResult !=""){

                                                                    return checkResult;

                                                             }



                                                      }



                                                  //--2--



                                                      public ResultDataDto createTradeOrder(TradeOrderDto tradeOrder){

                                                             ResultDataDto checkResult = tradeValidator.check(tradeOrder);

                                                             if(!checkResult.isSuccess()){

                                                                    return checkResult;

                                                             }



                                                      }

                                               }



                                                //          spring bean



                                               @Service



                                               public class TradeValidator{



                                                  @Autowird

                                                  public TradeService tradeService;



                                                  //--1



                                                  public String check(TradeOrderDto tradeOrder){



                                                         if(this.sellerId == null || this.sellerId <= 0L){

                                                              return " ID

                                                                             ";

                                                             //return "sellerId

                                                                                    ";

                                                               //return " ID sellerId

                                                                                             ";



                                                         }



                                                         return "success";



                                                  }



                                                  //--2



                                                  public ResultDataDto check(TradeOrderDto tradeOrder){



                                                         if(this.sellerId == null || this.sellerId <= 0L){

                                                              return ResultDataDto.fail(500," ID

                                                                                                  ");

                                                             //return ResultDataDto.fail(500,"sellerId

                                                                                                            ");

                                                               //return ResultDataDto.fail(500," ID sellerId

                                                                                                                 ");



                                                         }



                                                          return ResultDataDto.success();



                                                         //



                                                         //return checkUniq(tradeOrder);



                                                  }



                                                  //---Validator



                                                  public ResultDataDto checkUniq(TradeOrderDto tradeOrder){



                                                         TradeOrderBO tradeOrderBo = tradeService.getByCondition(tradeOrder);



                                                         if(tradeOrderBo == null){



                                                            return ResultDataDto.success();



                                                          }

                                                         return ResultDataDto.fail(500,"          ");



                                                  }



                                               }



                                               2.5 

https://mp.weixin.qq.com/s/-zsvEnx8ulO9EH0T3XfKqw 4/7

2023/4/12 01:31

                                               @Service

                                               public class TradeFacadeImpl{



                                                      @Autowird

                                                      public TradeService tradeService;



                                                  //--1



                                                      public String createTradeOrder(TradeOrderDto tradeOrder){

                                                             String checkResult = ParamCheckUtil.checkParam(tradeOrder);

                                                             if(checkResult != null && checkResult !=""){

                                                                    return checkResult;

                                                             }



                                                      }



                                                  //--2--



                                                      public ResultDataDto createTradeOrder(TradeOrderDto tradeOrder){

                                                             ResultDataDto checkResult = tradeValidator.check(tradeOrder);

                                                             if(!checkResult.isSuccess()){

                                                                    return checkResult;

                                                             }



                                                      }

                                               }



                                                public class ParamCheckUtil{

                                                      //

                                                      public static String checkParam(Object obj){

                                                             Class clazz = obj.getClass();

                                                             Field[] fields = clazz.getDeclaredFields();

                                                             //obj instance list check logic

                                                             //obj instance map check logic



                                                             boolean check=false;

                                                             for (Field field : fields){



                                                                    field.setAccessible(true);

                                                                    //field Annotation check

                                                                    //field Value Check



                                                     }



                                                       if(!check){                ";

                                                        return "  field.name



                                                     }



                                                     return "";



                                                  }



                                               }



                                               2.6 



                                               webcontrollerweb

                                               



                                                  Hibernate Validator+springboot /mvc



                                               @Controller(value="/trade")

                                               public class TradeController{



                                                      @RequestMapping("/create")

                                                      public String createTradeOrder( @RequestBody @Valid TradeOrderVO tradeOrder

                                               {



                                                               if(result.hasErrors()){

                                                                      return result.errorListstr();



                                                               }

                                                      }

                                               }



                                               import org.hibernate.validator.constraints.NotBlank;



                                               import javax.validation.constraints.AssertFalse;



                                               import javax.validation.constraints.Pattern;



                                                 public class TradeOrderDto{  ")

                                                  @NotBlank(message=" ID



                                                  private Long sellerId;



                                                   @NotBlank(message="        ")

                                                   @Pattern(regexp="^[0-9]{1,2}$",message="

                                                                                                          ")



                                                  private String amount;



                                               }



                                               2.7 



                                               webwebweb 

                                               JS

                                               



                                               2.8 

https://mp.weixin.qq.com/s/-zsvEnx8ulO9EH0T3XfKqw 5/7

2023/4/12 01:31

                                               @Service

                                               public class TradeFacadeImpl{



                                                      @Autowired

                                                      private UserService userService;



                                                  //



                                                      public String createTradeOrder(TradeOrderDto tradeOrder){



                                                     UserDTO sellerDto = userService.getById(tradeOrder.getSellerId);



                                                     if(sellerDto == null){

                                                         return "

                                                                 ";

                                                         //throw new Exception("

                                                                                ");



                                                     }



                                                  }



                                               }



                                               2.9 



                                               

                                               



                                               @Service

                                               public class ItemSpuFacadeImpl{



                                                      @Autowired

                                                      private SpuService spuService;



                                                  //



                                                      public String createFrontSpu(ItemFrontSpuDTO frontSpuDto){



                                                             frontSpuDto.check();



                                                             spuService.createFrontSpu(frontSpuDto.name,frontSpuDto.code,frontSpuDto



                                                      }

                                               }



                                               @Service

                                               public class SpuService{



                                                      @Autowired



                                                   private ItemSpuDao itemSpuDao;



                                                      // spu

                                                      public boolean createFrontSpu(String frontSpuName,String code,Set<KVPair> pr



                                                             if(frontSpuName == null || String code == null || propSet == null){

                                                                    return false;



                                                             }

                                                             if(propSet.isEmpty()){



                                                                    return false;

                                                             }

                                                             int count = itemSpuDao.insert(ItemSpuEntity);

                                                      }



                                               }



                                               public class ItemSpuDao extends BaseDao{

                                                      int insert(ItemSpuEntity spuEntity){

                                                             if(spuEntity == null || spuEntity.name == null){

                                                                    return 0;

                                                             }

                                                             return super.insert(spuEntity);

                                                      }



                                               }



                                                



                                               

                                               

                                               servicefacadeimpl,controller

https://mp.weixin.qq.com/s/-zsvEnx8ulO9EH0T3XfKqw 6/7

2023/4/12 01:31

                                               ChatGPT



                                               



                                               GPT-46



                                               



                                               Spring Junit 

https://mp.weixin.qq.com/s/-zsvEnx8ulO9EH0T3XfKqw 7/7

配图

第 7 页 — 001-p07.jpeg

001-p07.jpeg

第 7 页 — 002-p07.jpeg

002-p07.jpeg

Released under the MIT License.