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的开发者 ...
随机推荐
- PHP和MySql数据库,如何获取每个分类的记录的总数
示例的数据库,如下: 本文说的问题,就是统计每个学院(Sdept)的人数. 还有很多情况,比如说:在制作CMS的时候,文章有个分类问题,所有的文章的记录都是存放到同一个表中. 当我们需要统计每个分类的 ...
- Dockerfile设置apt-get install tzdata的noninteractive方法
在Ubuntu系统中,执行命令apt-get install -y tzdata以安装tzdata软件包.但是,最近发现,在Ubuntu 18.04 (Bionic Beaver)上无法自动安装该软件 ...
- linux 的 scp 命令
linux 的 scp 命令 可以 在 linux 之间复制 文件 和 目录: ================== scp 命令 ================== scp 可以在 2个 linu ...
- Raising Modulo Numbers(ZOJ 2150)
这题其实就是快速求一个高次幂的模. 这是题目的答案 #include<iostream> #include<cmath> using namespace std; ]; ]; ...
- 图像特征--HOG特征
1.HOG特征:方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和统计图像局部区域的梯 ...
- api接口访问限制
1.场景描述 在日常开发接口的时候,尤其是restfull接口,肯定会考虑安全或者是做一些自定义的限制,用来界定并维护代码.那么,我们都会采用什么方法那?通常来讲,我们可以通过session的形式,以 ...
- Linux中关机和磁盘管理命令
常用的关机命令 shutdown -h 关机 -r 重启 halt poweroff reboot 重启 logout 退出登录命令 磁盘管理命令 df -h 以1024进制计算最合适的单位显示磁盘容 ...
- PAT1060【大模拟啊】
怎么麻烦怎么来了??? 提供几个案例: 5 0.00001 0.00001 0 0.0 0.0222 1 0.001 0.2000 2 005.06 0.230 1 00.020 0 贴份代码跑.. ...
- poj 2068 Nim
Nim POJ - 2068 题目大意:多组数据,两人轮流操作,n轮一循环,给出总石子数和这n轮每次两人能取的石子上限(下限为1).取到最后一颗者输. /* f[i][j]表示在第i轮中一共有j个石子 ...
- SQL中合并多行记录的方法总汇
-- =============================================================================-- Title: 在SQL中分类合并数 ...