书写可维护的javascript
内容介绍
编写可维护的代码很重要,因为大部分开发人员都花费大量时间维护他人代码。
1.什么是可维护的代码?
一般来说可维护的代码都有以下一些特征:
- 可理解性---------其他人可以接手代码并理解它的意图和一般途径,而无需原开发人员的完整解释
- 直观性---------代码中的东西一看就能理解明白,不管其操作过程多么复杂
- 可适应性 ---------代码以一种数据上的变化不要求完全重写的方法撰写
- 可扩展性----------在代码架构上已考虑到在未来允许对核心功能进行扩展
- 可调试性---------在有地方出错时,代码可以给予你足够的信息来尽可能直接地确定问题所在
2.怎么书写可维护的代码
书写出维护的代码最重要的就是要有一套严格的代码约定,为什么你去git上找来的项目,你能看得懂,而自己写的代码过几天就看不懂了(说的是我自己- -!)。
- 要让代码可维护,首先它必须可读。
1.可读性的大部分内容都是和代码缩进相关,当所有代码都用同一种缩进方式时,整个项目都会更加利于阅读。(这点现在编辑器下个插件就可以实现了)。
2.注释:这个非常重要。在大多数编程语言中,对每个方法的注释都视为一个可行的实践。因为javascript可以在代码的任何地方创建函数,所以这点常常被忘记。在每个函数和方法都应该包含一个注释,描述其目的和用于完成任务所可能使用的算法。因为存在浏览器差异,JavaScript代码一般会包含一些hack,不要假设其他人在看你代码的时候能够理解,请写上你的注释。
- 变量和函数命名是要合法并且要尽量符合其本意。
- 松散耦合
1.解耦HTML/Javascript
- <!-- 使用了<script>的紧密耦合的HTML/Javascript -->
- <script type='text/javascript'>
- document.write('hello word!')
- </script>
- <!-- 使用事件处理程序属性值的紧密耦合的HTML/Javascript -->
- <input type='button' onclick='dosomething()' />
虽然这些从技术上来说都是正确的,但是实践中,它们将表示数据的HTML和定义行为的Javascript紧密耦合在一起。理想情况下,html和javascript应该完全分离
2.解耦CSS/JavaScript
- // css对javascript的紧密耦合
- element.style.color ='red'
- // css对javascript的松散耦合
- .red{ color: red}
- element.className ='red'
通过修改css类,就可以让大部分样式信息严格保留在css中。javascript可以更改样式类,但并不会直接影响到元素的样式,这样做的话当出现问题时,可以追溯到css而非javascript.
3.解耦应用逻辑/事件处理程序
- function handleKeyPress(event){
- event = EventUtil.getEvent(event);
- if(event.keyCode == 13){
- var target = EventUtil.getTarget(event);
- var value = 5 * parseInt(target.value)
- if(value > 10){
- document.getElementById('error-msg').style.display='block'
- }
- }
- }
这个事件处理程序既包含了应用逻辑,还进行了事件的处理。这种方式的代码会让调试变的很难。
- function vaildataValue(value){
- value = 5 * parseInt(value);
- if(value > 10){
- document.getElementById('error-mag').style.display = 'block';
- }
- }
- function handleKeyPress(event){
- event = EventUtil.getEvent(event);
- if(event.keyCode == 13){
- var target = EventUtil.getTarget(event);
- vaildataValue(target.value);
- }
- }
将应用逻辑从事件处理程序中分离出来,就能更准确的定位问题,使代码更容易阅读。以下是应用和业务逻辑之间松散耦合的几条原则:
1.勿将event对象传给其他方法,只传来自event对象中所需的数据;
2.任何可以在应用层面的动作都应该可以在不执行任何事件处理程序的情况下进行
3.任何事件处理程序都应该处理事件,然后将处理转交给应用逻辑
书写可维护的javascript的更多相关文章
- 编写可维护的JavaScript代码(部分)
平时使用的时VS来进行代码的书写,VS会自动的将代码格式化,所有写了这么久的JS代码,也没有注意到这些点.看了<编写可维护的javascript代码>之后,做了些笔记. var resul ...
- 《编写可维护的JavaScript》之编程实践
最近读完<编写可维护的JavaScript>,让我受益匪浅,它指明了编码过程中,需要注意的方方面面,在团队协作中特别有用,可维护性是一个非常大的话题,这本书是一个不错的起点. 本书虽短,却 ...
- 编写可维护的Javascript读书笔记
写在前面:之前硬着头皮参加了java方面的编程规范培训,收货良多,工作半年有余的时候,总算感觉到一丝丝Coding之美,以及造轮子的乐趣,以至于后面开发新功能的时候,在Coding style方面花了 ...
- 《编写可维护的javascript》读书笔记(中)——编程实践
上篇读书笔记系列之:<编写可维护的javascript>读书笔记(上) 上篇说的是编程风格,记录的都是最重要的点,不讲废话,写的比较简洁,而本篇将加入一些实例,因为那样比较容易说明问题. ...
- 《编写可维护的javascript》读书笔记(上)
最近在读<编写可维护的javascript>这本书,为了加深记忆,简单做个笔记,同时也让没有读过的同学有一个大概的了解. 一.编程风格 程序是写给人读的,所以一个团队的编程风格要保持一致. ...
- 编写可维护的JavaScript 收纳架
如果你看过Nicolas C.Zakas写过的任何作品,你必须承认他是个不折不扣的天才.也只有天才级的才能写出<JavaScript高级程序设计>让所有的前端攻城师人手一本.Nicolas ...
- 【读书笔记】读《编写可维护的JavaScript》 - 编程实践(第二部分)
本书的第二个部分总结了有关编程实践相关的内容,每一个章节都非常不错,捡取了其中5个章节的内容.对大家组织高维护性的代码具有辅导作用. 5个章节如下—— 一.UI层的松耦合 二.避免使用全局变量 三.事 ...
- 编写可维护的JavaScript之编程风格
在团队中只有每个人的编程风格一致,大家才能方便的互相看懂和维护对方的代码. 1. 层级缩进 对于层级缩进目前有两种主张:1)使用制表符这种方法有两种好处,第一,制表符和缩进层级之间是一一对应关系,符合 ...
- 《编写可维护的JavaScript》 笔记
<编写可维护的JavaScript> 笔记 我的github iSAM2016 概述 本书的一开始介绍了大量的编码规范,并且给出了最佳和错误的范例,大部分在网上的编码规范看过,就不在赘述 ...
随机推荐
- selenium + python自动化测试unittest框架学习(三)webdriver对页面其他控件操作(三)
1.对话框,下拉框 (1)对话框的有两种,一种是iframe格式的,需要switch_to_iframe()进行定位,现在大部分的对话框是div格式的,这种格式的可以通过层级定位来定位元素,先定位对话 ...
- python3对数据库的基本操作
其实Python同Java一样,都有对JDBC操作的API. 注意:我的Python版本为3.6.5 Python2.7是应用比较广的,百度博客上很多相关的例子,所以本次不再列出. 只要是用过Java ...
- jQuery.mobile.changePage的参数
选项 类型:对象 属性: allowSamePageTransition(默认值:假的) 类型:布尔 默认情况下,changePage()忽略请求更改为当前活动页面.将此选项设置为true,则允许该请 ...
- ERDAS IMAGINE 2014 32位 破解安装
1. 安装Install ERDAS Foundation 2014 2. 安装ERDAS IMAGINE 2014 32位 3. 安装Intergraph ...
- PHP+JQUERY+AJAX上传、裁剪图片(2)
<script type="text/javascript"> var imgCut = { imgOpt : { imgPrototypeId : 'imgProto ...
- 移动端h5列表页上拉加载更多
背景 上星期公司要求做一个回收书籍的h5给安卓用,里面有一个功能是回收记录列表.设计师那边出的稿子是没有要求分页或者是上拉刷新的,但是众所周知,列表页数据很多的情况下,h5加载是很慢的.所以我一开始是 ...
- linux(Centos7系统)中安装JDK、Tomcat、Mysql
安装前准备两个工具:(360可以安装) 1.JDK的安装 使用yum命令安装 .查看是否已安装JDK # yum list installed |grep java .卸载CentOS系统Java环境 ...
- PyDev For Eclipse
eclipse安装Pydev 1.根据自己的eclipse和你安装的python选择可以安装的版本 Update sites for various PyDev versions: Latest ve ...
- 算法学习记录-查找——平衡二叉树(AVL)
排序二叉树对于我们寻找无序序列中的元素的效率有了大大的提高.查找的最差情况是树的高度.这里就有问题了,将无序数列转化为 二叉排序树的时候,树的结构是非常依赖无序序列的顺序,这样会出现极端的情况. [如 ...
- Python 学习笔记(十五)Python类拓展(一)继承
继承 继承(Inheritance):是面向对象软件技术当中的一个概念.如果一个类别A "继承自" 另一个类B,就把这个A称为“B的子类”,而把B称为“A的父类”,也可以称“B是A ...