code review的时候,发现了如下代码。
/**
* 验证一个字符串是一个长度为10,且内容都是数字。
* */
public static boolean validate(String str) {
if (str == null || str.length() != 10) {
return false;
}
// 纯数字
try {
Long.valueOf(str);
} catch (NumberFormatException ex) {
return false;
}
return true;
}
第一反应是异常这么用,好奇怪。异常不应该这么用的啊,也许是为了图省事吧。
但是还是应该把异常用在异常情况下,而不是这么误用。这个用法和用异常判断文件的结束没有什么太大的区别。
仔细看了看,不仅仅是异常用的比较奇怪,这个方法是有漏洞的。
明明方法接口的约定是判断长度和数字,但是因为是用Long的valueOf方法,通过异常来实现,结果像"-100000000"这样本来不合法的字符串可以通过这个校验了。
重构后代码如下,直白的完成该方法的接口约定。
/**
* 验证一个字符串是一个长度为10,且内容都是数字。
* */
public static boolean validate2(String str) {
if (str == null || str.length() != 10) {
return false;
}
char[] data = new char[str.length()];
str.getChars(0, str.length(), data, 0);
for (int i = 0; i < data.length; i++) {
char c = data[i];
if (c < '0' || c > '9') {
return false;
}
}
return true;
}
分享到:
相关推荐
用于信号的EMD、EEMD、VMD分解_vmd重构_故障诊断emd_故障诊断_故障重构_VMD信号重构_源码.rar.rar
对经验模态分解后的各分量IMF进行重构代码,函数可直接调用。
reconfiguration_配电网_配电网络重构_reconfiguration_配电网重构_配电网重构_源码.zip
提取MFCC参数,再由MFCC重构幅值谱,利用幅值谱重构语音。
重构__改善既有代码的设计_高清 绝对清晰
mutual_information_相空间重构matlab_互信息熵_源码.zip
资源名:用于信号的EMD、EEMD、VMD分解_vmd重构_故障诊断emd_故障诊断_故障重构_VMD信号重构 资源类型:matlab项目全套源码 源码介绍:用于信号的分解、降噪和重构,实现故障诊断 源码说明: 全部项目源码都是经过...
牛顿拉普逊法就算配电网重构的潮流程序,结构清晰易懂。
PMSM_无传感器FOC_的单分流三相电流重构算法_01299a_cn
配电网重构是一个多目标、多时段、多组合、多约束的非线性优化问题。该问题的复杂性,决定了难以用单纯的数学方法得到满意的解。尝试用改进的遗传算法进行配电网络重构,建立评价函数,寻求该评价函数最优解
mutual_information_相空间重构matlab_互信息熵.zip
压缩传感重构算法中的子空间追踪算法,用于信号的重构
重构——改善既有代码设计,经典文档,架构师必须教程
医学图像三维重构平台,实现了三维重构用VC++实现
数据信号处理matlab,程序实现压缩感知重构过程,仅供参考。
可重构密码_博士论文_COBRA1
reconfiguration_配电网_配电网络重构_reconfiguration_配电网重构_配电网重构.zip
31天重构速成_中文版,通过实例来讲解如何运用模式。
初中语文语文论文体验中转换拓展后重构__例谈鲸等常识性课文的教学