js024-最佳实践
js024-最佳实践
本章内容:
可维护的代码
保证代码性能
部署代码
24.1 可维护性
24.1.1 代码的可维护性
代码可维护性的特征:
|
特性 |
说明 |
|
可理解性 |
其他人可以理解它的用途和一般途径 |
|
直观性 |
代码中的东西能一看就明白,不论其操作过程多么复杂 |
|
可适应性 |
代码以一种数据上的变化不要求完全重写的方法撰写 |
|
可扩展性 |
在代码架构上已考虑到在未来允许对核心功能进行扩展。 |
|
可调试性 |
当有地方出错时,代码可以给予你足够的信息来尽可能直接的确定问题所在。 |
24.1.2 代码约定
1、可读性
在必要的地方进行必要的注释
A、函数和方法
B、 大段代码
C、 复杂的算法
D、Hack
2、变量个函数名
变量名应为名词
函数名应以动词开始,返回布尔类型的一般以is开始
变量和函数都应使用合乎逻辑的名字
3、变量类型透明
有3种表示数据类型的方式:
A、初始化;
B、 使用匈牙利标记法来指定变量信息
C、 使用类型注释
24.1.3 松散耦合
1、HTML/JavaScript
2、CSS/JavaScript
3、应用逻辑/事件处理程序
24.1.4 编程实践
1、尊重对象所有权
不要为实例或原型添加属性;
不要为实例或原型添加方法;
不要重定义已存在的方法;
2、避免全局量
3、避免与null进行比较
如果看到了与null比较的代码金陵尝试一下技术替换:
A.如果值应为一个引用类型,使用instanceof操作符检查其构造函数;
B. 如果值应为一个基本类型,使用typeof操作符检查其类型;
C. 如果是希望对象包含某个特定的方法名,则使用typeof操作符确保指定名字的方法存在于对象上。
!!代码中的null比较越少,就越容易确定代码的目的,并消除不必要的错误。
4、使用常量
将数据和使用它的逻辑进行分离:
A、重复值:任何在多处用到的值,都应该抽取为一个常量。(这样容易造成当一个值变了另一个值没变的错误);
B、 用户界面字符串:任何用于显示给用户的字符串,都应该抽取出来以方便国际化;
C、 URLs:在web中,资源位置很容易变更,所以推荐用一个公共地方存放所有的URL;
D、任意可能会更改的值:每当你用字面量的时候,都应该考虑该变量的值是否不会再改变,如果是的话,这个值应该被提取出来作为一个常量
24.2 性能
24.2.1 注意作用域
1、避免全局查找
2、避免with语句
24.2.2 选择正确的方法
1、避免不必要的属性查找
2、优化循环
A、减值迭代
B、简化终止条件
C、简化循环体
D、使用后测试循环:for和while是前测试循环,do-while是后测试循环,可以避免最初终止条件的计算,因此运行更快。
3、展开循环
4、避免双重解释
5、性能的其他注意事项
A、原生方法比较快
B、Switch语句比较快
C、位运算符比较快
24.2.3 最小化语句数
1、多个变量生命
2、插入迭代值
3、使用数组和对象字面量
24.2.4 优化DOM交互
1、最小化现场更新
2、使用innerHTML
3、使用事件代理
4、注意HTMLCollection
24.3 部署
24.3.1 构建过程
注意:
1、知识产权问题;
2、文件大小;
3、代码组织
24.3.2 验证
24.3.3 压缩
1、文件压缩
压缩器一般进行如下步骤:
A.删除二外的空白(包括换行)
B. 删除所有的注释
C. 缩短变量名
2、HTTP压缩
声明:该博客由http://www.cnblogs.com/lal-fighting/原创发表,未经作者允许,不得私自转载抄袭!!!
js024-最佳实践的更多相关文章
- ASP.NET跨平台最佳实践
前言 八年的坚持敌不过领导的固执,最终还是不得不阔别已经成为我第二语言的C#,转战Java阵营.有过短暂的失落和迷茫,但技术转型真的没有想象中那么难.回头审视,其实单从语言本身来看,C#确实比Java ...
- 《AngularJS深度剖析与最佳实践》简介
由于年末将至,前阵子一直忙于工作的事务,不得已暂停了微信订阅号的更新,我将会在后续的时间里尽快的继续为大家推送更多的博文.毕竟一个人的力量微薄,精力有限,希望大家能理解,仍然能一如既往的关注和支持sh ...
- ASP.NET MVC防范CSRF最佳实践
XSS与CSRF 哈哈,有点标题党,但我保证这篇文章跟别的不太一样. 我认为,网站安全的基础有三块: 防范中间人攻击 防范XSS 防范CSRF 注意,我讲的是基础,如果更高级点的话可以考虑防范机器人刷 ...
- 快速web开发中的前后端框架选型最佳实践
这个最佳实践是我目前人在做的一个站点,主要功能: oauth登录 发布文章(我称为"片段"),片段可以自定义一些和内容有关的指标,如“文中人物:12”.支持自定义排版.插图.建立相 ...
- Spring Batch在大型企业中的最佳实践
在大型企业中,由于业务复杂.数据量大.数据格式不同.数据交互格式繁杂,并非所有的操作都能通过交互界面进行处理.而有一些操作需要定期读取大批量的数据,然后进行一系列的后续处理.这样的过程就是" ...
- Atitit.log日志技术的最佳实践attilax总结
Atitit.log日志技术的最佳实践attilax总结 1. 日志的意义与作用1 1.1. 日志系统是一种不可或缺的单元测试,跟踪调试工具1 2. 俩种实现[1]日志系统作为一种服务进程存在 [2] ...
- PHP核心技术与最佳实践——全局浏览
难得买到并喜欢一本好书,‘PHP核心技术与最佳实践’. 几天时间,先看了个大概,总结一下整体是什么样子的,怎么看怎么学. 1.总共14章: 2.第1.2章讲PHP的OOP: 其中第一章侧重于PHP的O ...
- Abp集成Swagger的最佳实践
1.在项目中添加nuget包 Abp.Web.Api.SwaggerTool 2.在项目Abp模块的DependsOn添加AbpWebApiSwaggerToolModule Run It,启动项目, ...
- MySQL · 答疑解惑 · MySQL 锁问题最佳实践
http://mysql.taobao.org/monthly/2016/03/10/ 前言 最近一段时间处理了较多锁的问题,包括锁等待导致业务连接堆积或超时,死锁导致业务失败等,这类问题对业务可能会 ...
- 《转载》Java异常处理的10个最佳实践
本文转载自 ImportNew - 挖坑的张师傅 异常处理在编写健壮的 Java 应用中扮演着非常重要的角色.异常处理并不是功能性需求,它需要优雅地处理任何错误情况,比如资源不可用.非法的输入.nul ...
随机推荐
- Linux配置无线网卡驱动实现无线上网
本机装Linux,需要配置的无线驱动.一般Ubuntu都集成无线驱动,基本上无线可以直接使用! 01.查看无线网卡的型号 [root@Mr-zhao software]# lspci | gre ...
- 63-w 简明笔记
显示关于系统用户的信息 w [options] [username] w用于显示当前登录系统的用户的名字以及他们的终端设备编号.登录时间.正在运行的命令和其他一些信息 参数 username 限定仅显 ...
- redis的主从复制配置
redis的主从复制配置 一. 原理 Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架 ...
- 使用D3制作图表(1)--画布绘制
使用D3绘制图表可以使数据更加直观. 使用D3前要先加载D3库,这里有两种方式,一种是在线加载<script type="text/javascript" src=" ...
- 简单Matrix 的方法说明记录
查找资料加上自己理解 ,简单说明Android中Matrix怎么用(新手有错误的地方,希望指正,主要自己记录学习用的) Matrix包含一个3 X 3的矩阵,专门用于图像变换匹配. Matrix提供 ...
- git 保存用户名和密码
打开TortoiseGit控制面板 点击 Edit global .gitconfig文件 添加 [credential] helper = store OK了 你再登录一次之后密码就被记住了
- 转: linux内核版本本地版本号的检查——setlocalversion
转载:http://blog.csdn.net/adaptiver/article/details/7225980 1. 引子 编译2.6.35.7 kernel版本的时候发现,"2.6 ...
- ES6新特性:Javascript中Set和WeakSet类型的数据结构
ES6提供了新的数据结构Set,Set对象不是数组, 可以用来保存对象或者基本类型, 所有保存的值都是唯一的, chrome浏览器>38和FF>13,以及nodeJS,对Set支持良好, ...
- 问题-栈S最多能容纳4个元素,现有6个元素按A、B、C、D、E、F顺序进栈,问可能的出栈顺序。
住栈的特性:对于取出栈内元素每次只能从栈顶开始取(后进先出(栈满时,只能先出后进)) 由于栈内只能容纳4个元素: 所以 E F不可能第一个出栈: 当栈内少于四个元素时 既可以选择进栈,也可以选择出栈 ...
- 【HDU 5733】tetrahedron
输入4个点三维坐标,如果是六面体,则输出内切球的球心坐标和半径. 点pi对面的面积为si,点a,b,c组成的面积=|ab叉乘ac|/2. 内心为a,公式: s0=s1+s2+s3+s4 a.x=∑si ...