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

本书虽短,却五脏俱全,主要涵盖:编程风格(基本格式化、注释、语句和表达式、变量),编程实践(UI层松耦合、避免使用全局变量等)、自动化,3个部分的内容。

本文主要整理归纳了书中编程实践章节的核心内容,其他两章编码风格自动化部分,还需结合当前的流行趋势重新整理,稍后再与大家分享。


第5章 UI层的松耦合

  • Web开发三大要素,HTML(结构、内容),CSS(布局、样式),JavaScript(交互、行为)
  • 将JavaScript从CSS中抽离
  • 将CSS从JavaScript中抽离
  • 将JavaScript从HTML中抽离
  • 将HTML从JavaScript中抽离

第6章 避免使用全局变量

  • 导致问题:命名冲突、代码的脆弱性、难以预测、意外的全局变量
  • 单全局变量:依赖尽量少的全局变量,即只创建一个全局变量
  • 命名空间:将功能按命名空间分组,l例如:var oa30.doc.workflow = {};
  • 模块:将功能按模块分组,常用异步模块定义 Asynchronous Module Definition,简称AMD模式
  • 零全局变量:简单的功能,通过自执行函数,可避免创建全局变量(需使用严格模式)

第7章 事件处理

  • 规则1:隔离应用逻辑
  • 规则2:不要分发事件对象

第8章 避免『空比较』

  • 检测原始值,常用typeof
  • 检测引用值:检测函数用typeof、检测数组用Object.prototype.toString.call(value)===‘[Object Array]'
  • 检测属性,最好使用in运算符,只检测实例对象的属性,则需配合使用hasOwnProperty()

第9章 将配置数据从代码中分离出来

  • 配置数据有:URL、重复的值、需要展现给用户的字符串、设置、可能发生变更的值
  • 抽离配置数据,保存到单独的文件中,与逻辑代码分开

第10章 抛出自定义错误

  • 为了兼容各个浏览器,请确保抛出的错误是一个Error对象,例如:throw new Error(‘i am a error.');
  • 使用throw还是try-catch,错误应该在应用程序栈中最深的部分抛出,业务逻辑代码应该有错误处理的能力

第11章 不是你的对象不要动

  • 不要修改:原生对象、DOM对象、BOM对象、类库对象
  • 原则:不覆盖方法、不新增方法、不删除方法
  • 更好的途径,使用基于对象的继承、基于类型的继承、门面模式
  • 关于Polypill的注解
  • ECMAScript5引入了三种阻止对象修改的级别,防止扩展、密封、冻结

第12章 浏览器嗅探

  • User-Agent检测只能用于旧的或者特定版本的浏览器,绝不应当用于最新版本的或者未来的浏览器。
  • 尽可能地使用特性检测,退而求其次可考虑User-Agent检测,永远不要使用特性推断和浏览器推断。

扩展阅读

欢迎来到 石佳劼的博客,如有疑问,请在「原文」评论区 留言,我会尽量为您解答。


《编写可维护的JavaScript》之编程实践的更多相关文章

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

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

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

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

  3. 【读书笔记】读《编写可维护的JavaScript》 - 编程风格(第一部分)

    之前大致翻了一遍这本书,整体感觉很不错,还是不可追求快速,需要细细理解. 这篇随笔主要对本书的第一部分中对自己触动比较大的部分及与平常组织代码最为息息相关的部分做一个记录,加深印象. 主要讲述五点内容 ...

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

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

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

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

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

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

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

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

  8. 拯救一切强迫症 - 读《编写可维护的 JavaScript》(一)

    拯救一切强迫症 - 读<编写可维护的 JavaScript>(一) 本文写于 2020 年 4 月 24 日 我在小学的时候就有接触过编程,所以读大一的时候 C 语言还算是轻车熟路.自然会 ...

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

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

随机推荐

  1. Eclipse/IDEA中使用Maven创建Web项目报错

    Eclipse中的错误:Could not resolve archetype org.apache.maven.archetypes:maven-archetype-webapp-1.0.jar:R ...

  2. Pasha and String(思维,技巧)

    Pasha and String Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u S ...

  3. Android服务端本地窗口FramebufferNativeWindow

    Android窗口系统 我们知道Android系统采用OpenGL来绘制3D图形,OpenGL ES提供了本地窗口(NativeWindow)的概念,无论是在Android平台中还是其他平台中,只要实 ...

  4. textarea高度自适应问题

    textarea中的文字如果过多,就会产生滚动条,一本分文本被遮盖住,不能看到所有的文本. 那么,如何才能让textarea的高度随输入内容多少,可以自动的改变高度呢? 解决思想: 1 利用conte ...

  5. SQL Server Schema

    SQL查询是引用表时,需要为其制定模式名. 在数据库的术语中,模式就是名称空间.这种方式可以把相同特性的对象组合到一个共同的名称空间中.模式也可以保护对象,所以DBA可以给模式授予显示权限. 例如,D ...

  6. asp生命周期

    笔记:如果不对,欢迎指出来. 当一个用户访问一个页面,实际是发送http请求到服务器,而http请求其实是socket发送特定规范(协议)的文字(报文). 然后服务器的http.sys内核模块接受 请 ...

  7. react学习之props

    中秋过后刚好结束在上一家公司的工作,明天开始要正式的找工作了,最近也投了几家公司收到几分面试邀请.在面试的过程中几个面试官聊到了react(当然也有聊了vue,angular).感觉不懂react都不 ...

  8. cocos2d.js

    1.节点是Cocos2d最基础的东西 2.坐标与普通数学坐标一致 3.children属性表示节点的孩子,父节点位置变化,它包含的子节点也会跟着变化,以整体的形势移动 4.层(layer), 新建层: ...

  9. 为什么我们需要性能测试,需要loadrunner

    什么是功能: 功能按我理解就是软件实现需求,提供服务,那么功能测试就是实现的需求是否与客户给定需求一致,也就是符合预期结果 什么是性能: 功能是实现需求,提供服务,那么性能就可以理解为服务的好坏.比如 ...

  10. Lifting the Stone(hdoj1115)

    Lifting the Stone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...