js学习的一些想法(有一些来自网络)
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学习的一些想法(有一些来自网络)的更多相关文章
- NODE.JS学习的常见误区及四大名著
NODE.JS学习的常见误区及四大名著 前段时间由于不满于社区里很多人对于NODE.JS的种种误解而写了一篇文章名为: NODE.JS之我见:http://www.cnblogs.com/pugang ...
- 数据可视化的优秀入门书籍有哪些,D3.js 学习资源汇总
习·D3.js 学习资源汇总 除了D3.js自身以外,许多可视化工具包都是基于D3开发的,所以对D3的学习就显得很重要了,当然如果已经有了Javascript的经验,学起来也会不费力些. Github ...
- React.js学习
React.js学习之环境搭建 1 工欲善其事必先利其器:前端开发工具 1.1 WebStorm和Sublime Text Sublime Text:作为代码编辑器,Sublime Text的优点如下 ...
- Node.js学习之TCP/IP数据通讯
Node.js学习之TCP/IP数据通讯 1.使用net模块实现基于TCP的数据通讯 提供了一个net模块,专用于实现TCP服务器与TCP客户端之间的通信 1.1创建TCP服务器 在Node.js利用 ...
- 【温故知新】——BABYLON.js学习之路·前辈经验(二)
前言:在上一篇随笔BABYLON.js学习之路·前辈经验(一)中回顾了组内同事们长时间在Babylon开发实践中的总结出的学习之路和经验,这一篇主要对开发中常见的一些功能点做一个梳理,这里只作为温故知 ...
- Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G
code&monkey Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...
- Node.js学习笔记(2):基本模块
Node.js学习笔记(2):基本模块 模块 引入模块 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在No ...
- Vue.js学习-组件注册与使用
Vue.js学习文档 地址:https://cn.vuejs.org/v2/guide/ 关于自定义组件注册: 建议将<script></script>放在body标签之后 H ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
随机推荐
- 7、sraToolkit安装使用
参考:http://blog.csdn.net/Cs_mary/article/details/78378552 ###prefetch 参数解释 https://www.ncbi.nl ...
- Struts2学习第七课 通配符映射
一个WEB应用可能有长百上千个action声明,可以利用struts提供的通配符映射机制吧多个彼此相识的映射关系简化为一个映射关系. 通配符映射规则: --若找到多个匹配,没有通配符的那个将胜出(精确 ...
- hdu1072
#include <iostream> #include <cstdio> #include <cstring> #include <queue> us ...
- swift中的类拓展 extension
以添加颜色为例,new 一个swift文件夹 不是cocoa类 也不需要继承什么. 然后 import UIKit protocol ColorDalegate{ class func mainCol ...
- opencv头文件
转载自:http://blog.csdn.net/aaron121211/article/details/51526901 1. .hpp文件是.h和.cpp文件在一起的2. #include < ...
- Net Core 下载图片
直接上代码 string url = https://www.cnblogs.com/images/logo_small.gif; //获取网站当前根目录 string sWebRootFolder ...
- C#面向对象三大特性之三:多态
比起前面的封装和继承,多态这个概念不是那么好理解.我们还是从一个事例开始: 公司最近为了陶冶情操,养了几种动物(Animal),有猫(Cat).狗(Dog).羊(Sheep),这些动物都有共同的特性, ...
- 商派OMS增加PMC跟生产中心角色权限思路
一.目标:根据现有的商派OMS框架逻辑二开 PMC中(外协单位.生产中心)角色权限(如:下图的仓库角色,根据[接单元.发货员.仓库管理员],选择一或多的版权仓库,同理,如外协单位根据[**.** .* ...
- bzoj 3722: PA2014 Final Budowa
3722: PA2014 Final Budowa Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 303 Solved: 108[Submit][St ...
- bzoj3876: [Ahoi2014&Jsoi2014]支线剧情(上下界费用流)
传送门 一道题让我又要学可行流又要学zkw费用流…… 考虑一下,原题可以转化为一个有向图,每次走一条路径,把每一条边都至少覆盖一次,求最小代价 因为一条边每走过一次,就要付出一次代价 那不就是费用流了 ...