主页 > 知识库 > 网页基础 > Javascript/Ajax >
栏目列表

JavaScript开发规范要求(2)

来源:中国IT实验室 作者:佚名 发表于:2012-12-21 13:40  点击:
再说个降低代码可读性的例子,如:function getPostionTxt(type){return type == 2 ? 野外 : (type == 3 ? 商城 : (type == 4 ? 副本 : null));}应该改成:function getPostionTxt(type){var typeData={2:野外,3:商

再说个降低代码可读性的例子,如:function getPostionTxt(type){return type == 2 ? “野外” : (type == 3 ? “商城” : (type == 4 ? “副本” : null));}应该改成:function getPostionTxt(type){var typeData={“2″:”野外”,”3″:”商城”,”4″:”副本”};if (typeData[type]) return typeData[type]; else return null;}。如果type是从0开始不间断的整数,那么直接使用数组还更简单,这种结果看起来就清晰多了,看到前面那种多层三元表达式嵌套头不晕吗。  6、不在语句非赋值地方出生中文
  语句中不应该出现中文我想一般人都知道,虽然这样做不影响程序运行,但是显然有背行业标准要求,当然我们也不是在使 用“易语言”做开发。关于这一个问题,我本来不想把它拿出来说的,但我确实遇到有人这样做的,也不知道是不是因为他的英语实在太烂了,至少还可以用拼音 吧,另外寻求翻译工具帮忙也不错的选择。我举例如下,像以下写法出现在教学中倒还可以理解:

this.user['名字'] = '张三' 或者 this.user.名字 = '张三'
  7、明确定义函数固定数量的参数
  固定数量参数的函数内部不使用arguments去获取参数,因为这样,你定义的方法如果包含较多的脚本,就不能一眼看到这个方法接受些什么参数以及参数的个数是多少。比如像下面:
  var $ = function(){return document.getElementById(arguments[0]);}应该改成:var $ = function(elemID){return document.getElementById(elemID);}
 8、不必热衷动态事件绑定
  虽然知道事件可以动态绑定,比如使用addEventListener或者使用jQuery的bind方法,也知道采用动态事件绑定可以让 XHTML更干净,但是一般情况下我还是建议直接把事件写在DOM节点上,我认为这样可以使代码变得更容易维护,因为这样做,我们在查看源代码的时候就可 以容易地知道什么Element绑定了什么方法,简单说这样更容易知道一个按钮或链接点击时调了什么方法脚本。

  9、降低代码与XHTML的耦合性
  不要过于依赖DOM的一些内容特征来调用不同的脚本代码,而应该定义不同功能的方法,然后在DOM上调用,这样不管DOM是按钮还是链接,方法的调用都是一样的,比如像下面的实现显然会存在问题:

function myBtnClick(obj)
{
 if (/确定/.test(obj.innerHTML)) 
  alert('OK');
 else if (/取消/.test(obj.innerHTML)) 
  alert('Cancel');
 else
  alert('Other');
}
  上面例子其实在一个函数内处理了两件事情,应该分成两个函数,像上面的写法,如果把链接换成按钮,比如改成这 样:<input type=”button” onclick=”myBtnClick(this)” value=”确定” />,那么myBtnClick函数内部的obj.innerHTML就出问题了,因为此时应该obj.value才对,另外如果把按钮名称由中文 改为英文也会出问题,所以这种做法问题太多了。
  10、一个函数应该返回统一的数据类型
  因为JavaScrip是弱类型的,在编写函数的时候有些人对于返回类型的处理显得比较随便,我觉得应该像强类型语言那样返回,看看下面的两个例子:

function getUserName(userID)
{
 if (data[userID])
  return data[userID];
 else
  return false;
}
  应该改为:

function getUserName(userID)
{
 if (data[userID])
  return data[userID];
 else
  return "";
}
  这个方法如果在C#中 定义,我们知道它准备返回的数据类型应该是字符串,所以如果没有找到这个数据我们就应该返回空的字符串,而不是返回布尔值或其它不合适的类型。这并没有影 响到函数将来的调用,因为返回的空字符串在逻辑判断上可被认作“非”,即与false一样,除非我们使用全等于“===”或typeof进行判断。

有帮助
(1)
100%
没帮助
(0)
0%