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. Mahout0.9 – Clustering (聚类篇)

    Mahout – Clustering (聚类篇) Leave a reply 什么是Mahout? " Apache Mahout™ project's goal is to build ...

  2. Windows环境下 Hadoop Error: JAVA_HOME is incorrectly set. 问题

    最近尝试在windows开发MR程序并且提交Job,在解压缩好Hadoop,配置好环境变量后, 打开cmd 输入hadoop version 的时候出现以下错误: Error: JAVA_HOME i ...

  3. Ubuntu12.04安装svn1.8

    先在终端执行sudo sh -c 'echo "# WANdisco Open Source Repo" >> /etc/apt/sources.list.d/WANd ...

  4. Error creating form bean of class com.onlinebookstore.presentation.CatalogBean

    Error creating form bean of class com.onlinebookstore.presentation.CatalogBean 可能是action form未编译 这个问 ...

  5. 浮点数与快速log2

    请先于浮点数的文章:http://blog.jobbole.com/86371/ 先贴一张关于float和double的图: float: double: 快速log2长这样: int flog2(f ...

  6. [Swift]Scanner字符串扫描类

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  7. [Xcode 实际操作]三、视图控制器-(9)在Storyboard中使用标签和按钮控件

    目录:[Swift]Xcode实际操作 本文将演示标签和按钮在故事板中的应用. 在欢迎串口中,点击创建一个新的项目[Create a new Xcode project] [Single View A ...

  8. ALSA声音编程

    1. ALSA设备驱动将ALSA设备描述分为四层,从上到下为: default default:0 plughw:0,0 hw:0,0 不同的层次,对设备的控制权限不同,比如hardware para ...

  9. 简单几步实现 IOS UITextField输入长度的控制

    在ios开发过程中,我们有时候需要对UITextField的输入长度进行控制,比如输入手机号码最大长度为11位等,而ios自身又不像android那样可以设置输入框的输入长度,接下来通过简单几步实现这 ...

  10. 通过sql语句对MySql数据库的基本操作

    一.数据库的基本操作 CREATE DATABASE mybookstore; DROP DATABASE mybookstore; 二.表的基本操作 1.创建表 insert into 表名(字段名 ...