[Effective JavaScript 笔记]第53条:保持一致的约定
对于api使用者来说,你所使用的命名和函数签名是最能产生普遍影响的决策。这些约定很重要具有巨大的影响力。它建立了基本的词汇和使用它们的应用程序的惯用法。库的使用者必须学会阅读和使用这些。一致的约定可以让人更容易理解和记忆。
参数顺序
参数顺序的约定很重要。如,用户界面库通常具有一些接收多个测量值(宽,高)的函数。确保这些参数总是以相同的顺序出现。选择和其它常用库的参数顺序相同,可以方便用户使用,如第一个参数是宽度,第二个参数是高度。
var widget=new Widget(320,240);
除非有特殊的要求,要不就不要修改这样的约定。比如前端要处理多种语言html,css,js本来要记得东西都够多的啦。不要引入一些不必要的改变,使工作变得复杂。就像在css中我们在描述矩形的四条边的参数时,总是以上右下左的顺序。因为这个和margin,padding等属性约定相同顺序。如果违反了这个约定,页面表现一定会出错。
选项对象参数
因为这里有参数是一个对象,所以里面对应项的顺序就没有这么重要了。重要的是每一项的键值的命名,及后面参数的格式。
详尽的文档
每一个优秀的库都需要详尽的文档,而一个极优秀的库将文档作为辅助。一旦你的用户用熟了库,他们可以不再依赖于文档而自由使用。一致的约定可以帮助用户推测一个方法的行为。
提示
在变量命名和函数签名中使用一致的约定
不要偏离用户在他们的开发平台中很可能遇到的约定
[Effective JavaScript 笔记]第53条:保持一致的约定的更多相关文章
- [Effective JavaScript 笔记] 第4条:原始类型优于封闭对象
js有5种原始值类型:布尔值.数字.字符串.null和undefined. 用typeof检测一下: typeof true; //"boolean" typeof 2; //&q ...
- [Effective JavaScript 笔记] 第5条:避免对混合类型使用==运算符
“1.0e0”=={valueOf:function(){return true;}} 是值是多少? 这两个完全不同的值使用==运算符是相等的.为什么呢?请看<[Effective JavaSc ...
- [Effective JavaScript 笔记]第27条:使用闭包而不是字符串来封装代码
函数是一种将代码作为数据结构存储的便利方式,代码之后可以被执行.这使得富有表现力的高阶函数抽象如map和forEach成为可能.它也是js异步I/O方法的核心.与此同时,也可以将代码表示为字符串的形式 ...
- [Effective JavaScript 笔记]第28条:不要信赖函数对象的toString方法
js函数有一个非凡的特性,即将其源代码重现为字符串的能力. (function(x){ return x+1 }).toString();//"function (x){ return x+ ...
- [Effective JavaScript 笔记]第55条:接收关键字参数的选项对象
53节建议保持参数顺序的一致约定对于帮助程序员记住每个参数在函数调用中的意义很重要.参数较少这个主意不错,但如果参数过多后,就出现麻烦了,记忆和理解起来都不太容易. 参数蔓延 如下面这些代码: var ...
- [Effective JavaScript 笔记]第68条:使用promise模式清洁异步逻辑
构建异步API的一种流行的替代方式是使用promise(有时也被称为deferred或future)模式.已经在本章讨论过的异步API使用回调函数作为参数. downloadAsync('file.t ...
- [Effective JavaScript 笔记] 第2条:理解JavaScript的浮点数
JavaScript数值型类型只有数字 js只有一种数值型数据类型,不管是整数还是浮点数,js都把归为数字. typeof 17; // “number” typeof 98.6; // “num ...
- [Effective JavaScript 笔记]第46条:使用数组而不要使用字典来存储有序集合
对象属性无序性 js对象是一个无序属性集合. var obj={}; obj.a=10; obj.b=30; 属性a和属性b并没有谁前谁后之说.for...in循环,先输出哪个属性都有可能.获取和设置 ...
- [Effective JavaScript 笔记]第45条:使用hasOwnProperty方法以避免原型污染
之前的43条,44条讨论了属性的枚举,但都没有彻底地解决属性查找中原型污染的问题.看下面关于字典的一些操作 'zhangsan' in dict; dict.zhangsan; dict.zhangs ...
随机推荐
- 用一个下午从零开始搭建一个基础lbs查询服务
背景 现在做一个sns如果没有附近的功能,那就是残缺的.网上也有很多现成的lbs服务,封装的很完整了. 我首先用了下百度lbs云,但是有点不适合自己的需要,因此考虑用mongodb建一个简单的lbs服 ...
- SQL温故系列两篇(二)
.Sql 插入语句得到自动生成的递增的ID值 Insert into Table(name,des,num) values(’ltp’,’thisisbest’,10); Select @@ident ...
- linq查询语句转mongodb
&& (与操作) 子表达式可以通过&&合并来查询满足所有子表达式的文档 var query = from c in collection.AsQueryable< ...
- bootstrap tooltip 显示提示信息
参照网上文档,是这样说的, <a data-toggle="tooltip" data-placement="top" title="这是要提示 ...
- [BZOJ2659][WC2012]算不出的算式(几何)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2659 分析:很巧的想法,原式的值就是y=q/p x这条直线的下面和左边的点的个数.处理 ...
- 编写高质量代码改善C#程序的157个建议[用抛异常替代返回错误、不要在不恰当的场合下引发异常、重新引发异常时使用inner Exception]
前言 自从.NET出现后,关于CLR异常机制的讨论就几乎从未停止过.迄今为止,CLR异常机制让人关注最多的一点就是“效率”问题.其实,这里存在认识上的误区,因为正常控制流程下的代码运行并不会出现问题, ...
- Moqui学习之 Step by Step OrderProcureToPayBasicFlow
/** Get a service caller to call a service synchronously. */ //ServiceCallSync sync(); /** Map of na ...
- 字符串转json
function str2json(str) { var arr = str.split('.'), json = {}, _this = json; if (!json[arr[0]]) json[ ...
- Html-Css-设置DIV边框圆滑
border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -o-border-radius: 10px; ...
- Java-小数点控制
package 运算及类型转换类; import java.text.DecimalFormat; public class 控制小数点类 { public static double decimal ...