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. 由hibernate配置inverse="true"而导致的软件错误,并分析解决此问题的过程

    题目背景软件是用来做安装部署的工具,在部署一套系统时会有很多安装包,通过此工具,可以生成一个xml文件用以保存每个安装包的文件位置.顺序.参数.所需脚本.依赖条件验证(OS..net.IIS.数据版本 ...

  2. hive2.1.1安装部署

    转至:https://i.cnblogs.com/EditPosts.aspx?opt=1 一.Hive 运行模式 与 Hadoop 类似,Hive 也有 3 种运行模式: 1. 内嵌模式 将元数据保 ...

  3. <c和指针>学习笔记6输入输出函数

    1 错误报告 (1)perror函数 void perror(char const *message) error是标准库的一个外部整型变量(errno.h),保存错误代码之后就会把这个信息传递给用户 ...

  4. TCP三次握手四次挥手原理

    转自http://www.cnblogs.com/liuxiaoming/archive/2013/04/27/3047803.html TCP协议三次握手原理: 首先,给张图片,建立TCP三次握手的 ...

  5. 35.windows提权总结

    本文参考自冷逸大佬的博客,源地址在这里:https://lengjibo.github.io/windows%E6%8F%90%E6%9D%83%E6%80%BB%E7%BB%93/ windows提 ...

  6. 引用静态资源的url添加版本号,解决版本发布后的浏览器缓存有关问题

    在日常的工作中,我们经常会遇到页面文件(html,jsp等)中引用的js,css,图片等被修改后,而浏览器依然缓存着老版本的文件,客户一时半会看不到修改后的效果,同时也给生产环境的版本发布带来了一些问 ...

  7. adnroid 启动是没有标题栏

    <activity android:name=".MainActivity" android:theme="@android:style/Theme.Light.N ...

  8. React 从入门到进阶之路(三)

    之前的文章我们介绍了 React 创建组件.JSX 语法.绑定数据和绑定对象.接下来我们将介绍 React 绑定属性( 绑定class  绑定style).引入图片  循环数组渲染数据. 上一篇中我们 ...

  9. 初始Java虚拟机

    Java虚拟机内存模型(Java运行在虚拟机之上,虚拟机帮Java屏蔽底层的指令集,让Java能够跨平台运行) 内存模型以及分区,需要详细到每个区放什么? 方法区(method area): 方法信息 ...

  10. Spark Task 概述

    Task的执行流程: 1. Driver端中的 CoarseGrainSchedulerBackend 给 CoarseGrainExecutorBacken 发送 LaunchTask 消息 2. ...