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-最佳实践的更多相关文章

  1. ASP.NET跨平台最佳实践

    前言 八年的坚持敌不过领导的固执,最终还是不得不阔别已经成为我第二语言的C#,转战Java阵营.有过短暂的失落和迷茫,但技术转型真的没有想象中那么难.回头审视,其实单从语言本身来看,C#确实比Java ...

  2. 《AngularJS深度剖析与最佳实践》简介

    由于年末将至,前阵子一直忙于工作的事务,不得已暂停了微信订阅号的更新,我将会在后续的时间里尽快的继续为大家推送更多的博文.毕竟一个人的力量微薄,精力有限,希望大家能理解,仍然能一如既往的关注和支持sh ...

  3. ASP.NET MVC防范CSRF最佳实践

    XSS与CSRF 哈哈,有点标题党,但我保证这篇文章跟别的不太一样. 我认为,网站安全的基础有三块: 防范中间人攻击 防范XSS 防范CSRF 注意,我讲的是基础,如果更高级点的话可以考虑防范机器人刷 ...

  4. 快速web开发中的前后端框架选型最佳实践

    这个最佳实践是我目前人在做的一个站点,主要功能: oauth登录 发布文章(我称为"片段"),片段可以自定义一些和内容有关的指标,如“文中人物:12”.支持自定义排版.插图.建立相 ...

  5. Spring Batch在大型企业中的最佳实践

    在大型企业中,由于业务复杂.数据量大.数据格式不同.数据交互格式繁杂,并非所有的操作都能通过交互界面进行处理.而有一些操作需要定期读取大批量的数据,然后进行一系列的后续处理.这样的过程就是" ...

  6. Atitit.log日志技术的最佳实践attilax总结

    Atitit.log日志技术的最佳实践attilax总结 1. 日志的意义与作用1 1.1. 日志系统是一种不可或缺的单元测试,跟踪调试工具1 2. 俩种实现[1]日志系统作为一种服务进程存在 [2] ...

  7. PHP核心技术与最佳实践——全局浏览

    难得买到并喜欢一本好书,‘PHP核心技术与最佳实践’. 几天时间,先看了个大概,总结一下整体是什么样子的,怎么看怎么学. 1.总共14章: 2.第1.2章讲PHP的OOP: 其中第一章侧重于PHP的O ...

  8. Abp集成Swagger的最佳实践

    1.在项目中添加nuget包 Abp.Web.Api.SwaggerTool 2.在项目Abp模块的DependsOn添加AbpWebApiSwaggerToolModule Run It,启动项目, ...

  9. MySQL · 答疑解惑 · MySQL 锁问题最佳实践

    http://mysql.taobao.org/monthly/2016/03/10/ 前言 最近一段时间处理了较多锁的问题,包括锁等待导致业务连接堆积或超时,死锁导致业务失败等,这类问题对业务可能会 ...

  10. 《转载》Java异常处理的10个最佳实践

    本文转载自 ImportNew - 挖坑的张师傅 异常处理在编写健壮的 Java 应用中扮演着非常重要的角色.异常处理并不是功能性需求,它需要优雅地处理任何错误情况,比如资源不可用.非法的输入.nul ...

随机推荐

  1. android之视频播放

    视频播放和音频播放一样,都是使用MediaPlayer来播放的,区别就是MediaPlayer播放视频时是直接在Activity中实现的,而音频播放则需要写到服务中去.使用MediaPlayer只支持 ...

  2. 调用天气Api实现天气查询

    上面是简单截图: 前台代码: @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name=&qu ...

  3. RHEL7挂载ISO做本地yum

    测试环境,网络yum源没有本地yum源下载速度快!Yum比起RPM装包的好处就是可以自己处理依赖关系,也就是自己安装相关的依赖包,用起来也是很方便,但是删包的时候也会删除依赖包,这里要非常小心 01. ...

  4. 开发错误记录2 .MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!

    刚在调试android程序报 导致直接崩了 .MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed ...

  5. iOS不得姐项目--TabBar的重复点击实现当前模块刷新;状态栏点击实现当前模块回滚到最顶部

    一.实现功能:重复点击tabBar,刷新当前TableView,其余不受影响 <1>实现思路: 错误的方法: TabBar成为自己的代理,监听自己的点击--这种方法是不可取的,如果外面设置 ...

  6. quartz启动时间配置

    这些星号由左到右按顺序代表 : * * * * * * * 格式: [秒] [分] [小时] [日] [月] [周] [年] 序号 说明 是否必填 允许填写的值 允许的通配符 1 秒 是 0-59 , ...

  7. HTTP协议学习---(七)代理

    本文介绍一些HTTP代理服务器的概念和工作原理 阅读目录 什么是代理服务器 Fiddler就是个典型的代理 代理作用一:FQ 代理作用二:匿名访问 代理作用三:通过代理上网 代理作用四:通过代理缓存, ...

  8. 事件冒泡是什么如何用jquery阻止事件冒泡

    (1)什么是事件起泡 首先你要明白一点,当一个事件发生的时候,该事件总是有一个事件源,即引发这个事件的对象,一个事件不能凭空产生,这就是事件的发生. 当事件发生后,这个事件就要开始传播.为什么要传播呢 ...

  9. scales小谈grunt

    Grunt是基于Node.js的项目构建工具.它可以自动运行你所设定的任务.Grunt拥有数量庞大的插件,几乎任何你所要做的事情都可以用Grunt实现. 一头野猪映入眼帘,意:咕噜声 中文网站:htt ...

  10. 【BZOJ-3631】松鼠的新家 树形DP?+ 倍增LCA + 打标记

    3631: [JLOI2014]松鼠的新家 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1231  Solved: 620[Submit][Stat ...