您现在的位置:首页 --> JavaScript --> 以用户为中心的 API 异常设计
以用户为中心的 API 异常设计
浏览:2532次 出处信息
设置一个元素的高度:
var elem = document.getElementById('some-id'), val = '200px'; elem.style.height = val; // 原生写法 YAHOO.util.Dom.setStyle(elem, 'height', val); // YUI2 写法 $(elem).height(val); // jQuery 写法
当val = '200px'
时,以上三种写法都能正确工作。
当val = '200xx'
时,以上三种写法在 IE 下都抛出异常,在非 IE 下被忽略。
当val = '-200px'
时,以上三种写法在 IE 下前两种抛异常,jQuery 忽略。
由于 height 值在不少使用场景下是动态计算出来的,比如淘宝宝贝详情页,就有如下代码:
YUD.setStyle(switchTrigger, 'height', viewportHeight + docScrollTop - detailTop + 'px');
在某些特定情况下,viewportHeight + docScrollTop - detailTop
是负数,于是悲剧就产生了:IE 下,将会抛出异常,导致后续代码都不再执行。(这是一个真实的故事,淘宝的部分宝贝详情页,在发这篇文章之前,就因为该异常而导致部分功能不可用)
对于前端类库来说,在设计异常时,要尽可能考虑周全:
1. 异常的作用,是给程序员排查和定位错误用。对于线上代码来说,要尽可能的将异常设计为不打扰方式。比如在特定参数开启下,才会抛出或以 log 的形式输出。
2. 要特别小心浏览器自身 API 异常的不良设计。比如 IE 下对 style.height 非有效值的处理上,就不如其它浏览器。
3. 当然,该抛的异常还是得毫不犹豫抛出来。比如null.method()
,所有浏览器都会告诉你错了。类库的 API 在某些场景下也需如此设计,以让开发者第一时间内发现问题。
两句话概括 API 的异常设计原则:
1. 当某个异常不会导致后续代码不可执行时,这种异常在设计时,要尽可能不打扰用户;
2. 当某个异常会严重导致后续代码不可执行并产生不可预期的隐患时,就大胆抛出来。
简言之,就是 API 设计要以用户为中心,包括页面浏览者、类库使用者和类库开发者。
建议继续学习:
- Paypal接口详细代码(PHP版,非API接口) (阅读:18500)
- 面向“接口”编程和面向“实现”编程 (阅读:12726)
- 好的API设计 (阅读:11457)
- PHP连贯接口 (阅读:6517)
- 存储基础知识之——硬盘接口简述 (阅读:6378)
- JavaScript Interface 接口的实现 (阅读:5955)
- 干嘛不去掉“I”和“Impl”? (阅读:5812)
- 使用Mitmproxy分析接口 (阅读:5800)
- Google短网址的API (阅读:5334)
- 移动互联网api设计实践 (阅读:3993)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
后一篇:再论Javascript的类继承 >>
文章信息
- 作者:lifesinger 来源: 岁月如歌
- 标签: API 接口
- 发布时间:2010-06-18 18:08:38
建议继续学习
近3天十大热文
-
[76] memory prefetch浅析
-
[51] find命令的一点注意事项
-
[38] 基本排序算法的PHP实现
-
[33] 卡诺模型―设计品质与设计价值的思考
-
[32] Oracle bbed工具的编译
-
[26] 8大实用又重要Mac使用技巧
-
[26] 程序员技术练级攻略
-
[25] 两行 JavaScript 代码
-
[24] 读书笔记-壹百度:百度十年千倍的29条法则
-
[22] 小屏幕移动设备网页设计注意事项