> *
> * 一道面试题引发的思考
> * 编写js 函数fn ,有一个参数n , 实现返回数组,n个随机且不重复的整数值。返回的整数值范围[2,32]之间。
> * 1.工作经验,一般都不是按照工作年限计算 (思考自己工作经验)
> * 2.例如:工作y年,经验系数 1
> *
* 总结: 书写代码:可用、健壮、可靠、宽容、精益求精 (变成自己以后写代码习惯)
可用:简单合格;居然开始没有思路
健壮:基本的兼容性处理 边界 异常 输入处理 保证核心功能的正确输出
--- 如果没对n 的取值范围做校验 (n 1- 31直接正整数) 经验系数0.3
--- 如果没有对n是否为数字校验 系数0.5
--- 如果没有对n 是否存在校验 经验系数 0.7
--- 如果上述校验都做了,但是没有校验对 系数 0.9
自己代码都没有做这些
可靠:js没有数据结构类型 函数的返回值也无法强制返回数据。返回可靠结果
--- 如果留意并且处理返回可靠数据 请将经验系数*1.2;
--- 异常情况下的处理 异常情况是否 要抛出error
宽容:第一步对需求宽容 对调用者宽容 对用户宽容 对维护者宽容
--- 如果n是一个字符串 是否允许进入处理流程 如果是 *1.1
--- 如果n是一个含有小数的数字 是否进入流程处理 如果是 *1.3
--- 代码中是否有足够清晰的注释 如果是 系数*1.1
--- 如果需求调整了[2,32]的范围,你的代码是否能够可以快速调整,甚至不调整如果是 *1.2
精益求进: 实际开发中,时刻注意这些原则
*
</P>
```
function isCheck(value){
console.log("========"+value);
var j = 0 ;
for(var i = 0; i< randomArr.length; i++){
console.log("========"+i);
if(value == randomArr[i]){
break;
}else{
j++
}
}
if(i == j){
return true;
}else{
return false;
}
}
function getNRandomArr(n){
for(var i = 0; i < n ; i++){
var value = parseInt(Math.random()*100);
console.log("========"+value);
if(value>1 && value < 33 && isCheck(value)){
console.log("========"+value);
randomArr.push(value);
}else{
i--;
}
}
}