zoukankan      html  css  js  c++  java
  • 代码改造实录-- 分解大函数,并以新建函数名解释其功能

    原来的代码:

     1 OrderInfo orderForm = this.orderInfoRepository.findByOrderId(orderNo);
     2 if (orderForm != null && orderForm.getOrderStatus() == 0) {
     3     MakeAnAppointment make = this.makeAnAppointmentRepository.findByOrderId(orderForm.getId());
     4 
     5     if (orderForm.getOrderType() == 0) { 
     6         make.setOrderStatus(1); // 成功
     7         String extra = orderForm.getExtra();
     8         OrderPlus doctorVisit = JSON.parseObject(extra, OrderPlus.class);
     9         Integer id = doctorVisit.getId();
    10         OrderPlus d = this.doctorVisitRepository.findById(id).get();
    11         d.setMakeAnAppointment(doctorVisit.getMakeAnAppointment() + 1);
    12         this.doctorVisitRepository.save(d);
    13 
    14         JSONObject params1 = new JSONObject();
    15         params1.put("title", "加号提醒");
    16         params1.put("content", orderForm.getUserName() + "申请了你的加号,请及时处理");
    17         JSONObject params2 = new JSONObject();
    18         DoctorInfo doctorDetail = this.doctorDetailRepository.findById(orderForm.getDoctorId()).get();
    19         UserAccount user2 = this.userRepository.findById(doctorDetail.getAccountId()).get();
    20         params2.put("userId", user2.getUserName());
    21         params2.put("msg", JSON.toJSONString(params1));
    22         HttpUtils.post(this.url + "/api/im/send", params2);
    23 
    24         this.makeAnAppointmentRepository.save(make);
    25     } else if (orderForm.getOrderType() == 1) { 
    26         make.setOrderStatus(1);
    27         this.makeAnAppointmentRepository.save(make);
    28     } else if (orderForm.getOrderType() == 2) { 
    29         make.setOrderStatus(1);
    30         this.makeAnAppointmentRepository.save(make);
    31 
    32     } else {
    33         OrderAnnualFee fee = new OrderAnnualFee();
    34         BeanUtils.copyProperties(orderForm, fee);
    35         annualFeeService.saveAnnualFee(fee);
    36         orderService.saveLog(orderForm.getOrderId(), orderForm.getUserName(), orderForm.getUserName() + "会员缴费");
    37     }
    38     orderForm.setPayType("wx");
    39     orderForm.setPayTime(Long.valueOf(System.currentTimeMillis()));
    40     orderForm.setOrderStatus(1);
    41     this.orderInfoRepository.save(orderForm);
    42 }

    修改后代码:

     1 OrderInfo orderForm = this.orderInfoRepository.findByOrderId(orderNo);
     2 if (orderForm != null && orderForm.getOrderStatus() == 0) {
     3 
     4     if (orderForm.getOrderType() == 0) {
     5         String extra = orderForm.getExtra();
     6         OrderPlus doctorVisit = JSON.parseObject(extra, OrderPlus.class);
     7         orderPlusService.increaseAppointment(doctorVisit.getId());
     8 
     9         MessageSenderBiz.sendLovePlusToDoctor(orderForm.getUserName(), orderForm.getDoctorName(), this.url);
    10         appointmentService.changeAppointmentStatus(orderForm.getId(), 1);
    11     } else if (orderForm.getOrderType() == 1) { 
    12         appointmentService.changeAppointmentStatus(orderForm.getId(), 1);
    13     } else if (orderForm.getOrderType() == 2) { 
    14         appointmentService.changeAppointmentStatus(orderForm.getId(), 1);
    15     } else {
    16         OrderAnnualFee fee = new OrderAnnualFee();
    17         BeanUtils.copyProperties(orderForm, fee);
    18         annualFeeService.saveAnnualFee(fee);
    19         orderService.saveLog(orderForm.getOrderId(), orderForm.getUserName(), orderForm.getUserName() + "会员缴费");
    20     }
    21     orderForm.setPayType("wx");
    22     orderForm.setPayTime(Long.valueOf(System.currentTimeMillis()));
    23     orderForm.setOrderStatus(1);
    24     this.orderInfoRepository.save(orderForm);
    25 }

    修改后,将发送信息功能和更新预约状态两个功能独立出来,并移交至各自的功能类中。这样可以:1、增加代码复用,方法功能更清晰;2、符合类的封装思想,自己的事情自己办;3、原来的函数更简洁易读。

  • 相关阅读:
    《现代操作系统》精读与思考笔记 第一章 引论
    笔试面试中常见的位运算用法
    Linux磁盘概念及其管理工具fdisk
    linux选择sdb sdb4 fat32 还是sda分区
    Linux系统 fdisk命令 创建新分区
    Java----------JMX规范
    Java------------JVM(Java虚拟机)优化大全和案例实战
    Java关键字-----------------java中synchronized关键字的用法
    SQL-----------------------之ON和WHERE的区别
    C语言之单元测试
  • 原文地址:https://www.cnblogs.com/GreenMountain/p/13474146.html
Copyright © 2011-2022 走看看