编程习惯:

异常处理

如果你没有使用异常处理的习惯,这可能是因为你并未真正的理解它的作用。当你正确使用异常处理之后,你会发现你的代码最显著的变化就是:少了很多的 if-else 语句 。

虽然在 JS 中,只有错误(Error),没有异常(Exception),但是我们很多人还是喜欢将之成为异常( 我觉得并没什么不好,反而会更形象),js 把 异常分为以下6种:

EvalError: raised when an error occurs executing code in eval()

RangeError: raised when a numeric variable or parameter is outside of its valid range

ReferenceError: raised when de-referencing an invalid reference

SyntaxError: raised when a syntax error occurs while parsing code in eval()

TypeError: raised when a variable or parameter is not a valid type

URIError: raised when encodeURI() or decodeURI() are passed invalid parameters

但是很多人都以为只能使用这6种异常,不符合项目中的需求,所以就不使用异常处理了,但其实我们完全可以根据自己的项目去自定义一些异常,我建议大家在错误消息中包含函数名称以及失败的原因,这样会十分利于你的代码调试,如图:

为了便于统一管理,我建议大家自己建立一个异常模块,需要的时候,直接引入这个模块,如图

大家如果不习惯使用 异常处理 的话,我的建议是从你的下一个项目开始,你就试着去用异常处理,你会发现你的代码非常优雅,省去很多的 if-else,十分干净利落。

事件处理

有经验的开发者一定会知道,随着项目内容增多的时候,代码里面的事件处理程序会特别多,如果没有良好的管理,应用逻辑会和事件处理程序紧密的耦合在一起,而且这时的代码会有很大的冗余。为了解决这种问题,我建议大家采用以下3个方法:

1、隔离应用逻辑 2、禁止分发对象 3、定义事件注册模块。

  1. 隔离应用逻辑:将应用逻辑从所有事件处理程序中抽离出来是最佳的方法,因为你不知道接下来什么时候还会触发同一段的逻辑。

  2. 禁止分发对象:既然应用逻辑和事件处理程序是完全隔离的,那么应用程序中就不能有任何与事件有关的代码,所以,应用逻辑不能依赖于 event 对象来实现某一功能。

  3. 定义事件注册模块:整个时代都在提倡 js 代码统一模块化管理,所以,为了方便管理,我们有必要定义一个事件注册模块,用来统一完成事件的注册( 绑定 ) 和 移除

隔离应用逻辑

禁止分发对象

事件注册模块

配置分离

每一次修改源代码,都会有引入 bug 的风险,且只修改一些数据也会带来许多意外的风险,因为数据是不影响指令正常运行的,精心设计的应用应该把关键数据从源码中抽离出来,这样,我们每次修改时,只需要修改抽离出的那部分代码就行了,这样既简单方便又降低了很多风险。

什么是配置数据呢?就是在应用中写死了的那些值,如图的代码:

"/write.php"就是配置数据,想象一下,这只是一个文件中的代码,如果有100个文件中有这样的代码,假设某天,网站的 write.php 改成了 compose.php ,那么你就要将 "/write.php" 改100次 ! 所以,无论是从安全上讲还是从可维护上讲,我们都很有必要抽离出配置项,并且定义在 Config 配置模块中。(需要自己自定义一个 Config 配置模块,代码就不用演示了吧。。。)

其他

①:将 CSS 代码从 JS 代码中抽离出来(推荐 使用 class 类名作为 CSS 和 JS 通信的桥梁)

②:将 JS 代码从 HTML 标签中分里出来

( 不要使用<span onclick="dosomething()" ></span>)。

③:将 HTML 从 JS 中抽离出来 。这里特别说一下,有些人可能会习惯了在 JS 代码中 这样写:

$( "p" ).append( "<h2>大家好</h2>" ),这样并不是不可行,但是当需要插入大量的 HTML 标签时,代码就会变得十分丑陋而且难以维护,我们可以使用以下方法来解决这个问题:

1)使用 Jquery 的 load( "路径" ) 方法 从服务端加载 。

2)使用 <script type="text/html"> 在这里书写你的 HTML 代码 </script>,这样,浏览器就不会将它识别为 HTML 代码,你就可以在 JS 中 通过调用 这个<script>标签,实现优雅的生成 HTML 代码了。

js代码之编程习惯的更多相关文章

  1. js工作中编程习惯

    在前端编程中总结的习惯不管js还是css 还是后端开发这几点都是必须要做到的做好这几点不管去什么公司都是受到别人的尊重 善用变量,尤其是对DOM结构中的ID以及CLASS 多写注释,自己不熟,前面写后 ...

  2. js编程习惯

    1. JS代码中,相同的代码使用成员变量定义. 2. JS中对空值的判断,如if(str == null || str == undefined || str == ‘’){  XXX  } 可以直接 ...

  3. 最新的JavaScript核心语言标准——ES6,彻底改变你编写JS代码的方式!【转载+整理】

    原文地址 本文内容 ECMAScript 发生了什么变化? 新标准 版本号6 兑现承诺 迭代器和for-of循环 生成器 Generators 模板字符串 不定参数和默认参数 解构 Destructu ...

  4. JS代码指导原则

    一.什么是平稳退化? 如果含有JS代码的网页在用户浏览器不支持JS(或者禁用JS)时,用户仍然能够顺利浏览(网站功能正常,只是视觉效果可能差一些),那么这个网页就能够平稳退化 网页能够平稳退化是很必要 ...

  5. 14条最佳JS代码编写技巧

    http://gaohaixian.blog.163.com/blog/static/123260105201142645458315/写任何编程代码,不同的开发者都会有不同的见解.但参考一下总是好的 ...

  6. Node.js之异步编程

    > 文章原创于公众号:程序猿周先森.本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号. ![file](https://img2018.cnblogs.com/blog/830272/20 ...

  7. 最新的JavaScript核心语言标准——ES6,彻底改变你编写JS代码的方式!

    原文地址 迁移到:http://www.bdata-cap.com/newsinfo/1741515.html 本文内容 ECMAScript 发生了什么变化? 新标准 版本号6 兑现承诺 迭代器和f ...

  8. 防御性编程习惯:求出链表中倒数第 m 个结点的值及其思想的总结

    防御性编程习惯 程序员在编写代码的时候,预料有可能出现问题的地方或者点,然后为这些隐患提前制定预防方案或者措施,比如数据库发生异常之后的回滚,打开某些资源之前,判断图片是否存在,网络断开之后的重连次数 ...

  9. 漫谈C++:良好的编程习惯与编程要点

    以良好的方式编写C++ class 假设现在我们要实现一个复数类complex,在类的实现过程中探索良好的编程习惯. ① Header(头文件)中的防卫式声明 complex.h: # ifndef ...

随机推荐

  1. MySql登陆密码忘记了怎么办?MySQL重置root密码方法

    本文主要介绍Windows和Linux系统下忘记密码重置root密码的方法,需要的朋友可以参考下. MySQL有时候忘记了root密码是一件伤感的事.这里提供Windows 和 Linux 下的密码重 ...

  2. django 配置 Django

    Django项目的设置文件位于项目同名目录下,名叫settings.py.这个模块,集合了整个项目方方面面的设置属性,是项目启动和提供服务的根本保证. 一.简述 settings.py文件本质上是一个 ...

  3. sort-插入排序

    void sort_insertion(vector<int> &v) { for(int i=1;i<v.size();i++) { for(int j=i;j>0; ...

  4. linux基础02-bash特性

    Linux的行结束符是:[$] Windows的行结束符是:[$+回车] 目录管理:ls.cd.pwd.mkdir.rmdir.tree 文件管理:touch.stat.file.rm.cp.mv.n ...

  5. Asp.net core 学习笔记 ( OData )

    2018-12-10 更新 : 从前我都是把 entity 直接用于 odata 曝露 api 给程序用. 如果这个程序是我们自己写的前端,这样的方式非常好,因为就好比前端可以直接对数据库每一个表做操 ...

  6. Practical Vim 第一章 & 第二章

    第一章:Vim 解决问题的方式 前言 本质上讲,我们的工作是重复性的.凡是可以简化重复性操作的方式,都会成倍地节省我们的时间. Vim 对重复性操作进行了优化.它之所以能高效地重复,是因为它会记录我们 ...

  7. 雷林鹏分享:jQuery EasyUI 树形菜单 - 使用标记创建树形菜单

    jQuery EasyUI 树形菜单 - 使用标记创建树形菜单 一个树形菜单(Tree)可以从标记创建.easyui 树形菜单(Tree)也可以定义在 元素中.无序列表的 元素提供一个基础的树(Tre ...

  8. WCF开发框架形成之旅--个人图片信息的上传保存

    WCF开发框架形成之旅--个人图片信息的上传保存 http://www.cnblogs.com/wuhuacong/archive/2011/12/23/2299614.html 一般在业务系统里面, ...

  9. 安装Jade

    1.安装node.js 直接有安装程序:http://nodejs.cn/ 2.安装git 直接的安装程序:http://jingyan.baidu.com/article/90895e0fb3495 ...

  10. Count Up Down(上下计数)

    这个题目是 Kayak 发布的代码挑战题目. 最简单的描述就是不使用循环,输出 0 到 5,然后同样不是会用循环的方式再次输出 5 到 0. 英文描述 Part 1 Write a program t ...