在我的开发工作中,我曾经和没有按照规范开发的同事合作过,和他合作的时候我无法用“开心”来形容。写这篇文章的目的不仅仅是为了和大家分享一点经验,也是为了给以后的合作伙伴提供一些参考。当然,如果我说的有什么不科学的地方,还是希望各界前辈多多指教。以下子项列举了各种规范要求,是针对同事的编码问题提出的,其他很多行业都认同的规范可能就不在赘述了。00-1010对于大型JavaScript项目,项目中包含的所有JavaScript文件通常都会在产品发布时进行压缩。例如,谷歌闭包编译器服务可以用来压缩代码。jQuery的新版本使用了这个工具来压缩代码,这通常会删除开发过程中编写的注释。所有空格和换行符都可以删除,甚至长变量名也可以用短而无意义的变量名替换。这样做的目的是为了加快文件下载速度,同时减少网站访问带来的额外数据流。此外,它在代码保护方面也发挥了一点作用。至少压缩后的代码即使恢复也不容易读取。为了让代码正确地通过压缩,通常要求语句以分号正常结束,大括号也应该严格结束,这取决于压缩工具的要求。所以如果一开始不遵循标准,等压缩错误后再回去找错误,就是浪费时间。
10-1010一般比较完善的开发工具(如Aptana Studio)都有代码“自动格式化”的功能,有助于实现换行、缩进、空格等统一的代码布局。您可以设置自己喜欢的格式标准,例如是否用左大括号开始新的一行。满足这一要求的目的是方便您的开发团队成员获取代码的副本,并使用IDE将其自动格式化为他们喜欢或熟悉的样式以供阅读。同事需要阅读您的代码,可能是因为您编写了通用方法,这些方法也用于其他模块的开发。阅读您的代码可以最深入地了解方法调用和实现的细节,这是简单的API文档无法达到的效果。
00-1010不要太依赖DOM的一些内容特性去调用不同的脚本代码,而是定义不同函数的方法,然后在DOM上调用,这样不管DOM是按钮还是链接,方法调用都是一样的。例如,下面的实现显然会有问题:函数myBtnClick(obj){ if (/OK/)。测试innerhtml))警报(。Else if (/cancel/)。test (obj.innerhtml))警报(“取消”);else警报(“其他”);} a herf=' javascript:'onclick=' mybtnclick(this)' ok/aaherf=' JavaScript 3360;'onclick=' mybtnclick(this)' cancel/a上面的例子实际上是在一个函数中处理两件事,应该分为两个函数。如上所述,如果把链接改成一个按钮,比如把它改成这样:输入类型=' button ' onclick=' myBtnClick(this)' value=' ok '/,那么在myBtnClick函数中obj.innerHTML就会出错,因为obj.value应该在这个时候使用,而如果把按钮名称从中文改成英文,也会出错,所以这样的问题太多了。
00-1010代码调整或重构后,应及时删除以前编写的不再使用的代码。如果你认为这些代码有一定的使用价值,可以把它们剪切到临时文件中。留在项目中不仅会增加文件大小,还会干扰团队的其他成员甚至他们自己。我怕以后回头看代码,不明白这是什么方法,有没有用过。当然,您可以使用文档注释标记@deprecated将此方法标记为不推荐使用。00-1010对于大型项目,一些开发成员一般会实现一些常用的方法,而另一些开发成员则会熟悉这些常用的方法,然后在自己的模块满足调用需求时直接调用,而不是像一些喜欢“单干”、完全看不懂这些常用方法文档的开发人员,用自己的代码重新编写,这样不仅会产生多余的代码,还会影响团队开发的效率。没有团队精神。比如在公共类文件Common.js中有一个函数$(elemid){ returndocument . getelementbyid(elemid)}的定义,所以这个函数的重复定义不应该在Mail.js中再次出现,尤其是对于一些复杂的方法。00-1010当有几种方法可以实现同类功能时,要根据场景选择最适合的方法。以下是jQuery框架的两个AJAX方法。如果确定服务器返回的数据是JSON,应该直接使用$。getJSON而不是使用$。获取数据,然后使用eval函数将其转换为JSON对象。如果在此请求中要传输大量数据,则需要$。不应使用post,还应采用指定返回的datatype(设置dataType参数)的方法。如果美元。使用了getJSON,我们在代码中一眼就能看出JSON是请求服务器返回的。提示:在jQuery1.4之后,如果数据输出的ContentType由服务器设置,例如,ASP.NET c#设置响应。内容类型=' application/JSON ',然后是$。get将与$.getJSON. 10-10没有什么不同,发现有人在页面下载后使用DIV保存JSON数据以备后用,就像这样:DIV id=' JSON ' { name ' : ' Tom ' }/DIV。显然,这个div不用于界面显示。如果我们必须这样做,我们可以使用HTML文件来缓存数据,至少使用隐藏字段来存储这些数据更合理。例如:输入类型='隐藏'值=' {'name' :' Tom'}'/。实际上,我们也可以使用窗口对象来保存一些数据。和上面的例子一样,我们可以直接在AJAX请求页面中包含这样的脚本块:script window . user data={ ' name ' : ' Tom ' };/script,当$('#MyDiv ')时。html(数据)是在AJAX请求回调函数中执行的,这个变量在窗口上立即可用。eval(document . getelementbyid(' user data ')。innerhtml)是不可避免的。如果窗口对象中存储了大量的数据,在不使用时应该及时手动清理,只有在浏览器刷新或重启后才会消失,这样会增加内存开销。00-1010代码优化是每个程序员应该努力实现的目标,也应该是程序员永恒的追求。写代码的时候,不要急着实现功能。如果你想思考如何写代码,代码的执行效率会更好。例如,如果在$(elemyid){ return document }中有一个快捷方法functoin。getElementById (elemyid)}定义getElementById,那么有人可能会编写这样的代码$ ('mydiv ')。parentnode。remove child($(“my div”))。实际上,getElementById DOM搜索在这里执行了两次,如果改成这样就更好了:var myDiv=$(' myDiv ');my div . parent node . remove child(my div).好在getElementById的DOM搜索速度比较快,如果换成getElementsByTagName,应该更注重优化。jQuery开发团队也提醒大家注意这个问题。当然,代码优化技能需要个人积累。有个朋友曾经跟我说,他写网站后台代码从来不用考虑优化,因为他们的网站用的是至强四核服务器,我觉得很可笑。
10-1010的能力对于每个程序员来说都是非常重要的,也是决定一个程序员水平的重要因素。它可以细化需求,抽象出不同的类,然后有条不紊地编写代码,这样代码结构清晰,可读性高,代码容易维护,又不会太程序化,没有章法,可以算是一个优秀的程序员。作者:网络快讯来源:http://webflash.cnblogs.com。