问题描述
可用
// 核心功能
function fn(n){
var arr = [];
for(var i=0; i<n; i++){
var rnd = getRand(2,32);
if(checkInArr(arr,rnd)){
i--;
}else {
arr.push(rnd);
}
}
}
健壮
- 对n的取值范围做校验(n必须是1~31之间的整数)
- 对n是否为数字做校验
- 对n是否存在做校验
可靠
尽可能在任何情况下,都返回一个可靠的结果,包括在异常情况下。
function fn(n) {
// 健壮性校验
if(!isThere(n)) return [];
if(!typeOK(n)) return [];
if(!rangeOK(n)) return [];
// 核心功能同上,略。
}
宽容
- 若n是一个字符串数字,能否进入处理流程?
- 若n是一个含有小数的数字,能否进入处理流程?
- 注释!!
- 若需求调整了[2,32]的范围,能否快速调整甚至不用调整?
/*
* 获取指定个数的随机整数,整数范围[2,32]
* @param {number} n需要的整数个数
* @return {array} 返回包含n个证书的数组,如果n非法,则返回空数组
*/
function fn(n) {
// 将整数范围做为变量提取出来
var min=2, max=32;
// 参数校验
if(!isThere(n)) return [];
if(!typeOK(n) && !isOKStr(n)) return [];
n = formatInitNum(n);
if(!rangeOK(n, min,max)) return [];
// 准备一个容器保存结果
var arr = [];
for(var I=0; I<n; I++) {
var rnd = getRand(min,max);
//检查是否重复
if(checkInArr){
I--;
}else {
arr.push(rnd)
}
}
return arr;
}