javascript开发最佳实践学习
1.给变量和函数命名--变量名和函数名尽量简短
好的变量命名应该是简短易懂的,还有需要避免的陷阱就是在命名中将数值与功能结合。
匈牙利命名法就是一个不错的选择,也就是常用的驼峰命名法。
使用英文来命名会更好。
把你的代码当成在陈述一件事情,最好你可以一行一行的阅读并且理解他在讲什么。

2.避免全局
全局的变量和函数名最好不要使用,容易造成全局变量污染,因为js文件都是在一个大的作用域内执行。
可以使用命名空间,闭包,面向对象,自执行函数来解决,具体的使用不做赘述,网上有大量的相关资料

3.坚持严格的代码规范
js语言十分的灵活,但是同样的也是一个弊端,很容易在不注意的时候就入坑了。
当下有很多js校验工具比如jslint,textMate JS Bundle等,清晰易懂的代码逻辑和结构能够帮助你更容易的完成交接,而且大大的加强代码的鲁棒性,而且当浏览器修复自己的不晚上的地方的时候,你还可以很轻松的继续使用自己的代码。
而且不好的代码会让接下来的人不断的给你擦屁股。

4.合理的注释能够帮助其他的开发人员更好的与你协同
合理的注释不仅能够帮助别人理解你的代码,对于自己来说如果很长时间没接触自己的代码,也有可能是陌生的代码,这个时候合理的注释就能帮你尽快的上手自己的代码。
网上一直流传好的代码应该有自我解释的能力,但是我认为首先不是每一个人都有能力写出来这样的代码(我就不能),其次所谓的自我解释,也是代码的作者自己的解释,不可能保证每一个人都有和你一样的想法去理解你的代码。
同样注释和写代码一样是一种艺术,过少容易解释不清楚,过多又显得很臃肿,所以“合理”是需要实践的。
代码注释方法有两种:“//”,“/**/”,通常第一种我用来做简单不需要特别醒目的注释,第二种我用来做大的划分时候的注释。
docBlockr是我经常使用的一个注释插件,sublime上有详细的介绍,你会发现注释也可以很美。

5.能用css实现的效果不要用js
这个是我个人的一个小观点,使用css来实现效果会更加的方便和可调试,如果使用js来给DOM加样式属性,有时候会显得凌乱,而且这样也能最好的实现样式和行为分离

6.尽量缩短你的js代码
比如简短的判断可以使用三元表达式,常用&&和||来增强逻辑,定义数组或者json对象的时候不要花哨,去繁留简,这样不代表你没水平,而且也更容易让其他的人理解。

7.模块化
这里涉及一个单一职责原则,就是尽量让一个函数只做一件事,不需要被外部调用的函数在名字前边加一个下划线(_),需要暴漏给外面的接口不一定里面有什么逻辑,里面可以全部是你定义的内部函数,这样不仅能最大程度的解耦合,减少各个函数之间的依赖,而且在你读代码的时候一显得更加的简洁清晰。

8.面向未来编程
子啊编程的时候多考虑一点,将来可能为你省去很多麻烦,让你的代码活起来,变的可以配置,也许现在看起来你的程序好像特别的臃肿,特别的傻,但是你会发现过了一段时间需求更改的时候,你不用伤筋动骨的去改造他,而是简单的改了几个参数,你就成功了。

9.避免嵌套过深
当你的函数一层又一层的嵌套的时候,不仅自己看起来吃力,我想和你合作的小伙伴也要推翻友谊的小船了,这个时候你就该考虑是不是要把里面一些复杂的或者可重用的功能给整合出来,让你的代码给优雅。

10.优化循环
将变量本地化,也就是常用的i和要遍历的长度length写在循环的外面,以免每次循环的时候都需要定义和计算,这会让你的程序变得缓慢。
将复杂计算尽量放到循环外部,还有一个就是传闻倒着循环会更nice(未验证)。

11.减少DOM操作
减少DOM操作可以提高你的程序的性能

12.初学的时候最好多学习原生的js代码,而不是单纯的依赖各种库,当你知道了js都可以做什么的时候,你可以合理的利用库来提升你的开发效率。

js学习的一些想法(有一些来自网络)的更多相关文章

  1. NODE.JS学习的常见误区及四大名著

    NODE.JS学习的常见误区及四大名著 前段时间由于不满于社区里很多人对于NODE.JS的种种误解而写了一篇文章名为: NODE.JS之我见:http://www.cnblogs.com/pugang ...

  2. 数据可视化的优秀入门书籍有哪些,D3.js 学习资源汇总

    习·D3.js 学习资源汇总 除了D3.js自身以外,许多可视化工具包都是基于D3开发的,所以对D3的学习就显得很重要了,当然如果已经有了Javascript的经验,学起来也会不费力些. Github ...

  3. React.js学习

    React.js学习之环境搭建 1 工欲善其事必先利其器:前端开发工具 1.1 WebStorm和Sublime Text Sublime Text:作为代码编辑器,Sublime Text的优点如下 ...

  4. Node.js学习之TCP/IP数据通讯

    Node.js学习之TCP/IP数据通讯 1.使用net模块实现基于TCP的数据通讯 提供了一个net模块,专用于实现TCP服务器与TCP客户端之间的通信 1.1创建TCP服务器 在Node.js利用 ...

  5. 【温故知新】——BABYLON.js学习之路·前辈经验(二)

    前言:在上一篇随笔BABYLON.js学习之路·前辈经验(一)中回顾了组内同事们长时间在Babylon开发实践中的总结出的学习之路和经验,这一篇主要对开发中常见的一些功能点做一个梳理,这里只作为温故知 ...

  6. Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G

    code&monkey   Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...

  7. Node.js学习笔记(2):基本模块

    Node.js学习笔记(2):基本模块 模块 引入模块 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在No ...

  8. Vue.js学习-组件注册与使用

    Vue.js学习文档 地址:https://cn.vuejs.org/v2/guide/ 关于自定义组件注册: 建议将<script></script>放在body标签之后 H ...

  9. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

随机推荐

  1. datatables的使用

    在开发web项目中,界面就是一个以丰富友好的样式来展现数据的窗口,同样的数据不用的展现形式给人不同的体验,数据列表是数据是一种常见展现形式,对于数据列表的一个最基本的要求就是能够实现分页以及检索功能. ...

  2. Netbeans使用UTF-8编码

    如果要NetBeans用UTF-8对文件进行解码,需要修改配置文件,具体方法如下: 1. 找到你的Netbeans安装目录下的etc文件夹,如C:\Program Files\NetBeans 6.9 ...

  3. JWT使用过程中遇到的问题

    1.创建token的盐设置过于简单,出现secret key byte array cannot be null or empty. 异常 解决方法:jwt:config:key:hwy ------ ...

  4. ASP.NET CORE系列【四】基于Claim登录授权

    介绍 关于什么是Claim? 可以看看其他大神的文章: http://www.cnblogs.com/jesse2013/p/aspnet-identity-claims-based-authenti ...

  5. 图片 响应式图像 Images Figures

    响应式图像 Bootstrap中的图像响应 .img-fluid <img class="img-fluid" src="http://lorempixel.com ...

  6. 牛客网小白月赛6C(DFS,思维)

    #include<bits/stdc++.h>using namespace std;vector<int>tree[1000010];int sum=0;int dfs(in ...

  7. go语言web开发框架_Iris框架讲解(五)MVC包使用

    在Iris框架中,封装了mvc包作为对mvc架构的支持,方便开发者遵循mvc的开发原则进行开发. iris框架支持请求数据.模型.持久数据分层处理,并支持各层级模块代码绑定执行. MVC即:model ...

  8. “Enterprise Architect”和数据库的不解之缘

    前言 在这个大数据盛行的时代,和数据打交道变的必不可少了,所有如果有工具来规范我们的数据库会更加方便我们的生活.这次机房,我们利用EA(Enterprise Architect)自动生成SQL语句来达 ...

  9. 2014-11-3 NOIP模拟赛2

    NOIP 2014 水题模拟赛 (请选手务必仔细阅读本页内容) 一.题目概况 中文题目名称 数列 刷漆 排队 英文题目与子目录名 seq paint layout 可执行文件名 seq paint l ...

  10. jmeter-提取器之JSON Path PostProcessor

    后置处理器添加 json path postprocessor. 用处: 当前接口响应返回的json中提取内容,作为变量可以在不同的请求中传递. 1. json path postprocessor ...