网易邮箱前端Javascript编码规范:基础规范
在多年开发邮箱webmail过程中,网易邮箱前端团队积累了不少心得体会,我们开发了很多基础js库,实现了大量前端效果组件,开发了成熟的opoa框架以及api组件,在此向大家做一些分享。今天想先和大家聊聊javascript的编码规范。
总所周知,javascript是一种语法极其灵活的语言。javascript在设计之初就只是用来为HTML添加动态效果的。由于他动态,弱类型等特性,以及不同浏览器的兼容性问题,造成了开发成本要比java等语言要高很多。正因为它太灵活,我们制定了适用于网易邮箱的javascript编码规范,尽可能多的降低由于语法灵活造成的问题。以下将具体介绍: 1. 变量命名规范 基本规范 前缀规范 例外情况: 为什么需要这样强制定义变量前缀?正式因为javascript是弱语言造成的。在定义大量变量的时候,我们需要很明确的知道当前变量是什么属性,如果只通过普通单词,是很难区分的。 例如:
var group = []; group.name = 'myGroup'; /**** some code ***/ //这时候你还能一眼就看出来group是什么吗? 又例如: var checked = false; var check = function(){ return true; } /** some code **/ if(check){//可能将checked写成check,由于不能很快速的发现check是函数,造成逻辑错误 //do some thing } 如果我们写成:
var bChecked = false; var fCheck = function(){ return true; } /** some code **/ if(bChecked){ // do some thing } if(fCheck()){ // do other thing } 就清楚很多了。 全局变量使用g作为前缀,定义在window下。例如gUserName,gLoginTime。
var userName = "dongua"; function checkName(userName){ //存在函数参数userName以及全局变量userName,如果要比较两个值是否相等,必需写为 return window.userName == userName } 如果使用了全局变量的前缀,就十分清晰了。 如果有内部函数,使用__f+动词[+名词]形式,内部函数必需在函数最后定义。例如: function fGetNumber(nTotal){ if(nTotal<100){ nTotal = 100; } return __fAdd(nTotal); function __fAdd(nNumber){ nNumber++; return nNumber; } } alert(fGetNumber(30));//alert 101 对象方法实现
8:尽量避免复杂的条件语句,可以使用临时的boolean变量代替。
9:一定要避免在条件中执行语句,例如:if((i=3)>2){},不可取。
|