这两个重载方法,你怎么重构?
来源:博客园    时间:2023-04-28 13:28:37


【资料图】

先看看下面SmsUtil类里的这两个重载方法

@ConfigurationProperties(prefix = "sms.config")@Setterpublic class SmsUtil {    @Autowired    private PlatformConfig platformConfig;        private String smsUrl;        /**     * 发送短信     *     * @param phone 手机号     * @param msg   信息内容     * @return 处理的信息     */    public String sendSMS(String phone, String msg) {        StringBuilder sbParam = new StringBuilder();        StringBuilder url = new StringBuilder();        if (StringUtils.isBlank(phone)) {            return "手机号不能为空!";        }        if (StringUtils.isBlank(msg)) {            return "发送的信息内容不能为空!";        }        if (!msg.contains(platformConfig.getSmsSignature())) {            msg = platformConfig.getSmsSignature() + msg;        }        try {            sbParam.append("?account=").append(platformConfig.getSmsAccount());            sbParam.append("&pwd=").append(URLEncoder.encode(platformConfig.getSmsKey(), "UTF-8")).append("&mphone=").append(phone).append("&content=")                    .append(URLEncoder.encode(msg, "UTF-8"));            url.append(smsUrl)                    .append(sbParam.toString());            Integer result = HttpClientUtils.requestByGetMethod(url.toString());            return result.toString();        } catch (Exception e) {            e.printStackTrace();            log.error("发送短信异常", e);        }        return "信息发送成功!";    }    /**     * 发送短信     * @param phone 手机号     * @param msg 短信内容     * @param userName 通道名称     * @param passWord 通道密码     * @return     */    public String sendSMS(String phone, String msg,String userName,String passWord) {        StringBuilder sbParam = new StringBuilder();        StringBuilder url = new StringBuilder();        if (StringUtils.isBlank(phone)) {            return "手机号不能为空!";        }        if (StringUtils.isBlank(msg)) {            return "发送的信息内容不能为空!";        }        if (!msg.contains(platformConfig.getSmsSignature())) {            msg = platformConfig.getSmsSignature() + msg;        }        try {            sbParam.append("?account=").append(userName);            sbParam.append("&pwd=").append(URLEncoder.encode(passWord, "UTF-8")).append("&mphone=").append(phone).append("&content=")                    .append(URLEncoder.encode(msg, "UTF-8"));            url.append(smsUrl)                    .append(sbParam.toString());            Integer result = HttpClientUtils.requestByGetMethod(url.toString());            return result.toString();        } catch (Exception e) {            e.printStackTrace();            log.error("发送短信异常", e);        }        return "信息发送成功!";    }}

我想你有一个想法跟我一样,重构方案如下↓↓↓↓

修改第一个sendSMS方法的方法体为:

/**     * 发送短信     *     * @param phone 手机号     * @param msg   信息内容     * @return 处理的信息     */    public String sendSMS(String phone, String msg) {        return sendSMS(phone, msg, platformConfig.getSmsAccount(), platformConfig.getSmsKey());    }

当然,还有其他的需要重构调整的地方。例如 passWord,程序员的英语水平,应该是password。

再有,再有什么呢?

X 关闭

Copyright   2015-2032 华西咨询网版权所有  备案号:京ICP备2022016840号-35   联系邮箱:295 911 578@qq.com