内容介绍

编写可维护的代码很重要,因为大部分开发人员都花费大量时间维护他人代码。

1.什么是可维护的代码?

一般来说可维护的代码都有以下一些特征:

  • 可理解性---------其他人可以接手代码并理解它的意图和一般途径,而无需原开发人员的完整解释
  • 直观性---------代码中的东西一看就能理解明白,不管其操作过程多么复杂
  • 可适应性 ---------代码以一种数据上的变化不要求完全重写的方法撰写
  • 可扩展性----------在代码架构上已考虑到在未来允许对核心功能进行扩展
  • 可调试性---------在有地方出错时,代码可以给予你足够的信息来尽可能直接地确定问题所在

2.怎么书写可维护的代码

书写出维护的代码最重要的就是要有一套严格的代码约定,为什么你去git上找来的项目,你能看得懂,而自己写的代码过几天就看不懂了(说的是我自己- -!)。

  • 要让代码可维护,首先它必须可读。

1.可读性的大部分内容都是和代码缩进相关,当所有代码都用同一种缩进方式时,整个项目都会更加利于阅读。(这点现在编辑器下个插件就可以实现了)。

2.注释:这个非常重要。在大多数编程语言中,对每个方法的注释都视为一个可行的实践。因为javascript可以在代码的任何地方创建函数,所以这点常常被忘记。在每个函数和方法都应该包含一个注释,描述其目的和用于完成任务所可能使用的算法。因为存在浏览器差异,JavaScript代码一般会包含一些hack,不要假设其他人在看你代码的时候能够理解,请写上你的注释。

  • 变量和函数命名是要合法并且要尽量符合其本意。
  • 松散耦合

1.解耦HTML/Javascript

  1.  
    <!-- 使用了<script>的紧密耦合的HTML/Javascript -->
  2.  
    <script type='text/javascript'>
  3.  
    document.write('hello word!')
  4.  
    </script>
  5.  
     
  6.  
    <!-- 使用事件处理程序属性值的紧密耦合的HTML/Javascript -->
  7.  
    <input type='button' onclick='dosomething()' />

虽然这些从技术上来说都是正确的,但是实践中,它们将表示数据的HTML和定义行为的Javascript紧密耦合在一起。理想情况下,html和javascript应该完全分离

2.解耦CSS/JavaScript

  1.  
    // css对javascript的紧密耦合
  2.  
    element.style.color ='red'
  3.  
     
  4.  
    // css对javascript的松散耦合
  5.  
    .red{ color: red}
  6.  
    element.className ='red'
  7.  
     

通过修改css类,就可以让大部分样式信息严格保留在css中。javascript可以更改样式类,但并不会直接影响到元素的样式,这样做的话当出现问题时,可以追溯到css而非javascript.

3.解耦应用逻辑/事件处理程序

  1.  
    function handleKeyPress(event){
  2.  
    event = EventUtil.getEvent(event);
  3.  
    if(event.keyCode == 13){
  4.  
    var target = EventUtil.getTarget(event);
  5.  
    var value = 5 * parseInt(target.value)
  6.  
    if(value > 10){
  7.  
    document.getElementById('error-msg').style.display='block'
  8.  
    }
  9.  
    }
  10.  
    }

这个事件处理程序既包含了应用逻辑,还进行了事件的处理。这种方式的代码会让调试变的很难。

  1.  
    function vaildataValue(value){
  2.  
    value = 5 * parseInt(value);
  3.  
    if(value > 10){
  4.  
    document.getElementById('error-mag').style.display = 'block';
  5.  
    }
  6.  
    }
  7.  
     
  8.  
    function handleKeyPress(event){
  9.  
    event = EventUtil.getEvent(event);
  10.  
    if(event.keyCode == 13){
  11.  
    var target = EventUtil.getTarget(event);
  12.  
    vaildataValue(target.value);
  13.  
    }
  14.  
    }

将应用逻辑从事件处理程序中分离出来,就能更准确的定位问题,使代码更容易阅读。以下是应用和业务逻辑之间松散耦合的几条原则:

1.勿将event对象传给其他方法,只传来自event对象中所需的数据;

2.任何可以在应用层面的动作都应该可以在不执行任何事件处理程序的情况下进行

3.任何事件处理程序都应该处理事件,然后将处理转交给应用逻辑

书写可维护的javascript的更多相关文章

  1. 编写可维护的JavaScript代码(部分)

    平时使用的时VS来进行代码的书写,VS会自动的将代码格式化,所有写了这么久的JS代码,也没有注意到这些点.看了<编写可维护的javascript代码>之后,做了些笔记. var resul ...

  2. 《编写可维护的JavaScript》之编程实践

    最近读完<编写可维护的JavaScript>,让我受益匪浅,它指明了编码过程中,需要注意的方方面面,在团队协作中特别有用,可维护性是一个非常大的话题,这本书是一个不错的起点. 本书虽短,却 ...

  3. 编写可维护的Javascript读书笔记

    写在前面:之前硬着头皮参加了java方面的编程规范培训,收货良多,工作半年有余的时候,总算感觉到一丝丝Coding之美,以及造轮子的乐趣,以至于后面开发新功能的时候,在Coding style方面花了 ...

  4. 《编写可维护的javascript》读书笔记(中)——编程实践

    上篇读书笔记系列之:<编写可维护的javascript>读书笔记(上) 上篇说的是编程风格,记录的都是最重要的点,不讲废话,写的比较简洁,而本篇将加入一些实例,因为那样比较容易说明问题. ...

  5. 《编写可维护的javascript》读书笔记(上)

    最近在读<编写可维护的javascript>这本书,为了加深记忆,简单做个笔记,同时也让没有读过的同学有一个大概的了解. 一.编程风格 程序是写给人读的,所以一个团队的编程风格要保持一致. ...

  6. 编写可维护的JavaScript 收纳架

    如果你看过Nicolas C.Zakas写过的任何作品,你必须承认他是个不折不扣的天才.也只有天才级的才能写出<JavaScript高级程序设计>让所有的前端攻城师人手一本.Nicolas ...

  7. 【读书笔记】读《编写可维护的JavaScript》 - 编程实践(第二部分)

    本书的第二个部分总结了有关编程实践相关的内容,每一个章节都非常不错,捡取了其中5个章节的内容.对大家组织高维护性的代码具有辅导作用. 5个章节如下—— 一.UI层的松耦合 二.避免使用全局变量 三.事 ...

  8. 编写可维护的JavaScript之编程风格

    在团队中只有每个人的编程风格一致,大家才能方便的互相看懂和维护对方的代码. 1. 层级缩进 对于层级缩进目前有两种主张:1)使用制表符这种方法有两种好处,第一,制表符和缩进层级之间是一一对应关系,符合 ...

  9. 《编写可维护的JavaScript》 笔记

    <编写可维护的JavaScript> 笔记 我的github iSAM2016 概述 本书的一开始介绍了大量的编码规范,并且给出了最佳和错误的范例,大部分在网上的编码规范看过,就不在赘述 ...

随机推荐

  1. SpringBoot实战(六)之使用LDAP验证用户

    关于ubuntu16.04服务器安装配置LDAP参考链接为:https://www.howtoing.com/how-to-install-and-configure-openldap-and-php ...

  2. MFC各个控件之间运用SendMessage()传送CString和char[]字符串,以及int类型数据

    LRESULT SendMessage( HWND hWnd, // handle to destination window UINT Msg, // message WPARAM wParam, ...

  3. 【luogu P1373 小a和uim之大逃离】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1373 想不出来状态 看了一眼题解状态明白了 dp[i][j][h][1/0] 表示在i,j点差值为h是小A还 ...

  4. Linux-- 查看文件 cat/tac

    cat 查看文件 用法:cat 文件名 1.显示非空白行行号 -b 2.显示所有行号 -n 3.将[Tab]按键以 ^T 显示出来 -T 4.显示出特殊字符 -V 5.将结尾的断行字符$显示出来 -E ...

  5. android学习:Android上面部署Apache FTPServer

    经过了几天的研究,终于Apache FTPServer在Android的配置和使用上有了一些心得,现在分享出来,提供给大家参考,说到这儿又不得不吐槽一下这要命的转载了,找Apache FTPServe ...

  6. crashes

    iOS 僵尸对象调试 - 简书 iOS APP审核被拒的解决之道(2.1) - - ITeye博客 iOS应用崩溃日志分析 - CocoaChina 苹果开发中文站 - 最热的iPhone开发社区 最 ...

  7. Oracle 表空间、段、区和块简述

    数据块(Block) 数据块Block是Oracle存储数据信息的最小单位.注意,这里说的是Oracle环境下的最小单位.Oracle也就是通过数据块来屏蔽不同操作系统存储结构的差异.无论是Windo ...

  8. ABAP术语-V1 Module

    V1 Module 原文;http://www.cnblogs.com/qiangsheng/archive/2008/03/21/1115707.html Function module creat ...

  9. ABAP术语-URL

    URL 原文:http://www.cnblogs.com/qiangsheng/archive/2008/03/20/1114193.html Uniform Resource Locator (U ...

  10. Docker学习系列(一)-CentOS7下安装Docker

    CentOS7下Docker的安装 一.操作系统要求 CentOS 7 64位 Kernel 3.10+ 本机系统信息 二.卸载旧版本 如果之前安排过旧版本的Docker,先卸载掉旧版Docker以及 ...