由一个函数引发的改进思考
来源:互联网 发布:手机知乎保存不了图片 编辑:程序博客网 时间:2024/05/21 09:08
问题描述
可用
// 核心功能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;}
阅读全文
0 0
- 由一个函数引发的改进思考
- 由一个问题引发的思考
- 一个由PING引发的思考
- 由一个面试题引发的思考
- 由一个线程例子引发的思考
- 由函数计时器引发的思考
- 由linux中的一个宏定义引发的思考
- 由一个小程序引发对 size_type类型的思考
- 由一个线程例子引发的思考(转载)
- 一个由List.removeAll()失效引发的思考
- 由getchar()函数的使用而引发的思考.
- 由InvocationTargetException引发的思考
- 由BigDecimal引发的思考
- 由IsPostBack引发的思考
- 由InvocationTargetException引发的思考
- 由B2C引发的思考
- 由cursor引发的思考
- 由size_t引发的思考
- Markdown 11种基本语法
- 服务器连接错误Host ‘XXX’ is not allowed to connect to this MySQL server
- classList
- (资源帖)开源信号处理算法库
- 解决 maven { url 'https://maven.google.com' } 国内用不了
- 由一个函数引发的改进思考
- 时间序列之MA(滑动平均模型)
- 2017-05-18 每日一记 如何在Navicat中查询blob类型数据
- 图像处理介绍
- Linux下nginx的安装及部署
- 使用NPM的技巧讲解
- Android App的启动黑/白屏
- 刷新iframe
- Eclipse项目中内容不保存,项目名称上有一个红叉