辛星浅析JavaScript中的编程规范

这是接着上一篇的博文写的,首先说一下编程规范的重要性吧,它可以让我们的代码保持一致性,可预测,更易于阅读和理解。一个新的开发者可以通过阅读规范,理解其他团队成员书写的代码,更快的上手干活。

第一点就是缩进。

很糟糕的一件事就是不一致的缩进,因为它看上去像是遵循了规范,但是可能一路上伴随着混乱和惊奇,重要的是规范的使用缩进。

一些开发人员喜欢用tab制表符缩进,因为任何人都可以调整他们的编辑器以自己喜欢的空格数来显示tab。也有人喜欢用空格,通常是四个空格。一般这个无所谓,只要团队每个人都遵循同一个规范就好了。

下面是一个缩进的范例:

function outer(a, b) {
    var c = 1,
        d = 2,
        inner;
    if (a > b) {
        inner = function () {
            return {
                r: c - d
            };
        };
    } else {
        inner = function () {
            return {
                r: c + d
            };
        };
    }
    return inner;
}

第二点就是花括号

花括号,也成为大括号。在技术上讲,在in或者是for中如果语句只有一条,那么花括号是不需要的,但是我们还是应该总是使用它们,这会让代码更具有持续性和易于更新。

对于左大括号的位置,有人喜欢放在同一行,有人喜欢放在下一行,一般来说并不重要。但是在某些情况下,括号位置不同会有不同的行为表现。这是因为分号插入机制(semicolon  insertion  mechanism),因为JavaScript会当我们选择不适用分号结束一行代码的时候JavaScript帮我们自动补上,这可能会导致麻烦。

比如下面代码:

function  func()  {

return

//下面代码不执行

{

name:"xin"

}

}

如果我们希望函数返回一个含有name属性的对象,我们会发现,由于隐藏分号,函数会返回undefined,前面的代码等价于下面的操作:

function  func() {

return undefined;

//下面代码不执行

{

name:"xin"

}

}

总之,就是使用花括号,并且始终把在与之前的语句放在同一行:

function  func() {

return  {

name:"xin"

};

}

第三点就是空格

空格的使用同样有助于改善代码的可读性和一致性。适合使用空格的地方包括:

(1)for循环分号分开后的部分。比如for (var  i  =  0; i < 10; i += 1 ){ ... }

(2)for循环中初始化的多变量。比如for (var  i  =  0, max= 10; i < max; i += 1 ){ ... }

(3)分割数组的逗号的后面。比如var  a  = [1, 2, 3];

(4)对象属性逗号的后面以及分隔属性名和属性值的冒号的后面。比如var  o  = {a: 1,b:2 };

(5)限定函数参数。比如 myFunc(a, b, c)

(6)匿名函数表达式function的后面。比如var myFunc =function () { ... }

(7)函数声明的花括号的前面。   比如   function   myFunc()  {  ... }

(8)使用空格分开所有的操作符和操作对象。比如+, -, *, =等前后都使用空格。

第四点就是命名规范

我们通常需要用同一种形式给我们的变量和函数命名,下面是一些规则:

(1)以大写字母写构造函数。虽然JavaScript没有类,但有new调用的构造函数,

比如var adam = new Person();这样我们就可以仅仅通过看函数名来知道该函数是否是一个正常函数。

(2)分割单词。当我们的变量或者函数名有多个单词的时候,最好单词的分离遵循统一的规范

一种常见的做法就是"驼峰(camel)命名法",就是单词小写,每个单词的首字母大写

对于构造函数,可以使用大驼峰命名法(upper camel case),比如MyConstructor()

对于函数和方法名,可以使用小驼峰命名法(lower camel  case),比如myFunction().

对于变量,开发者通常使用小驼峰命名法,还可以使用所有单词小写,使用下划线链接,

比如变量可以用first_name,old_company_name等等

(3)JavaScript中没有定义常亮的方法,

开发者都采用全部单词大写来命名这个程序声明周期中不会改变的变量

比如var  PI  = 3.14 ,MAX_WIDTH = 900;

(4)开发者可以仅仅使用一个下划线前缀来表示一个私有属性或者私有方法,比如

var  person  = {

getName:  function (){

return  this._getFirst() + ‘ ‘ + this._getLast();

},

_getFirst: function() {

...

},

_getLast:function (){

...

}

};

在上面的例子中,getName()就表示公共方法,部分稳定的API。而_getFirst()和_getLast()则表明了私有。它仍然是正常的公共方法,但是使用下划线前缀来警告person对象的使用者这些方法在下一个版本中是不能保证工作的,是不能直接使用的。

对于常见的_private规范:

(1)使用尾下划线表示私有,比如name_和getElements_()

(2)使用一个下划线前缀_  表示protected属性,两个下划线前缀__  表示private属性。

时间: 2024-10-27 16:42:41

辛星浅析JavaScript中的编程规范的相关文章

辛星浅析网站中的sitemap

所谓sitemap,通俗来说就是"网站地图",sitemap文件主要包含了网站中的有效连接,它会便于搜索引擎的抓取和收录,如果没有sitemap文件,蜘蛛就需要一个一个的通过我们网站中的超链接来进行抓取.有了sitemap之后,搜索引擎直接读取该文件就可以了,它可以让搜索引擎抓取我们的网页更加有效. 最通用的也是最简单的sitemap形式的文件,就是xml文件,我们在其中列出网站中的网址,以及关于每个网址的一些元数据.这些元数据通常是上次更新的时间.更新的频率.重要程度等等,它可以让搜

辛星浅析Redis中与key有关的命令

在Redis中,我们还可以直接对key直接操作,下面是我们常用的主要命令: (1)keypattern   它表示获取所有匹配pattern的keys,这里需要注意的是,我们应该避免使用该命令,因为对于大型数据库而言,该命令非常耗时,对Redis服务器的性能打击也是比较大的.它支持glob-style的通配符格式,比如用*表示任意一个或者多个字符,用?表示任意字符,用[xyz]表示方括号中的任意一个字母. (2)del   key ....   它是从数据库中删除参数中指定的keys,如果指定的

辛星浅析git中的submodule

有时候,我们需要将一些通用的部分抽取出来做成一个公共库,它可以给别的工程使用,而公共代码库的版本管理是比较麻烦的.我们可以使用git中的submodule来做到这一点. 1.添加 为当前工程添加submodule,命令格式是:git   submodule   add   仓库地址    路径 在添加完成后,在当前工程路径下会生成一个名为".gitmodules"的文件,它记录了子模块的信息,添加完成之后,将子模块所在的文件夹添加到工程中即可. 2.删除 删除submodule,我们首

辛星浅析Redis中的配置文件

Redis中的主要配置项如下: (1)daemonize  yes     它表示是否在后台运行,如果写成yes,那么在后台运行,如果是no,则表示不在后台运行. (2)pidfile  /var/run/redis.pid 当Redis在后台运行的时候,Redis默认会把pid文件放在/var/run/redis.pid,我们也可以在运行多个Redis服务时,指定不同的pid文件和端口 (3)port    6379    指定Redis运行的端口,默认是6379 (4)127.0.0.1  

辛星浅析Redis中的有序集合

Redis中的有序集合也就是sorted-set,它和set很相似,都是字符串的集合,都不允许重复的成员出现在一个集合张.有序集合与集合的主要差别是有序集合中的每一个元素都有一个序号与其相连,这个序号即score,Redis通过这个序号来为集合中的成员进行从小到大的排列.需要特别说明的是,尽管有序集合的元素值是唯一的,但是该value对应的score却可以是多个.在有序集合中添加.删除.更新一个成员的操作都很快,其时间复杂度是集合中成员的对数. 因为有序集合中的成员在集合中的位置是有序的,即便是

辛星浅析Linux中的信号

要说Linux中的信号,不得不先提一下中断这个概念.中断是系统中对于异步事件的响应,也就是说某个进程可以在代码执行的过程中被打断了,它先去执行一段异常处理程序.中断可以分为硬件中断,也就是外部中断,它是由外部设备通过硬件请求的方式产生的中断.而软件中断,也就是内部中断,它是由CPU运行程序的一些错误或者执行内部程序调用的时候引起的一种中断. 在CPU的层面去看中断,是这样的一个步骤: ①中断源发出中断信号  ②CPU判断是屏蔽该中断以及现场保护③CPU查询中断向量表,找到相应服务程序的入口地址,

辛星浅析linux中的日志

linux中对于连接时间的日志,一般由/var/log/wtmp和/var/run/utmp这两个文件记录,不过这两个文件无法直接使用cat查看,并且该文件由系统自动更新,我们可以通过w.who.finger.id.last.lastlog.ac命令进行查看. linux中对于进程的监控日志,首先说进程监控日志在监控用户的操作指令是很有效的,当服务器最近发现经常发生无故宕机或者无故被人删除文件等现象时,可以通过使用进程统计日志来查看.我们使用accton  /var/account/pacct来

辛星浅析linux中常用的日志文件

日志对于系统的安全来说非常重要,它记录了系统每天发生的各种各样的事情,用户可以通过它来检查错误发生的原因,或者寻找受攻击时攻击者留下的痕迹.日志的主要功能就是审计和检测.它还可以实时地检测系统的状态.检测和追踪侵入者. 通常日志根据类型可以分为连接时间日志.进程统计日志和错误日志.连接时间日志由多个程序执行,它把记录写到/var/log/wtmp和/var/run/utmp当中,而login程序负责更新wtmp和utmp文件,使得系统管理员能够够跟踪谁在何时登录了系统.对于进程统计日志由内核执行

辛星浅析linux中的ac命令

linux中的ac命令根据当前/var/log/wtmp文件中的登录的进入和退出来报告用户连接的时间,默认是以小时为单位,如果不使用标识,则报告的是总时间. 它的主要参数有两个: (1)-d将显示每天的连接时间. (2)-p将显示每个用户的连接时间.