這兩個重載方法,你怎麼重構?

先看看下面SmsUtil類裏的這兩個重載方法

@ConfigurationProperties(prefix = "sms.config")
@Setter
public 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。

再有,再有什麼呢?

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章