zoukankan      html  css  js  c++  java
  • 《编写可维护的JavaScript》之编程实践

    最近读完《编写可维护的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检测,永远不要使用特性推断和浏览器推断。

    扩展阅读

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


  • 相关阅读:
    一个比喻理解进程和线程的区别
    python蛋疼的编码decode、encode、unicode、str、byte的问题都在这了
    python类中__unicode__和__str__方法的妙用
    python re 正则提取中文
    一个python爬虫协程的写法(gevent模块)
    python 中range和xrange的区别
    python 监控oracle 数据库
    Spring security 知识笔记【自定义登录页面】
    Spring security 知识笔记【内存角色授权】
    Spring security 知识笔记【入门】
  • 原文地址:https://www.cnblogs.com/shi0090/p/5579346.html
Copyright © 2011-2022 走看看