资讯专栏INFORMATION COLUMN

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

张春雷 / 256人阅读

摘要:最近读完编写可维护的,让我受益匪浅,它指明了编码过程中,需要注意的方方面面,在团队协作中特别有用,可维护性是一个非常大的话题,这本书是一个不错的起点。扩展阅读编写可维护的欢迎来到石佳劼的博客,如有疑问,请在原文评论区留言,我会尽量为您解答。

最近读完《编写可维护的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》

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/79636.html

相关文章

  • 翻译连载 |《你不知道JS》姊妹篇 |《JavaScript 轻量级函数式编程》- 第 1 章:

    摘要:所以我觉得函数式编程领域更像学者的领域。函数式编程的原则是完善的,经过了深入的研究和审查,并且可以被验证。函数式编程是编写可读代码的最有效工具之一可能还有其他。我知道很多函数式编程编程者会认为形式主义本身有助于学习。 原文地址:Functional-Light-JS 原文作者:Kyle Simpson - 《You-Dont-Know-JS》作者 关于译者:这是一个流淌着沪江血液...

    omgdog 评论0 收藏0
  • [JS进阶] 编写维护性代码 (1)

    摘要:如果值是基本类型,则用操作符检查其类型。总结所有编程语言都需要可维护性良好的代码,这个很重要,因为大部分开发人员都花费大量时间维护他人的代码。 o(╯□╰)o 这并不是什么史诗巨作,没有非常深入去挖掘这类问题,只是从平常的JS代码习惯,参考书籍总结而来,希望对你有帮助的! 今天的web应用大至成千上万行的javascript代码,执行各种复杂的过程,这种演化让我们开发者必...

    Youngdze 评论0 收藏0
  • 个人分享--web前端学习资源分享

    摘要:前言月份开始出没社区,现在差不多月了,按照工作的说法,就是差不多过了三个月的试用期,准备转正了一般来说,差不多到了转正的时候,会进行总结或者分享会议那么今天我就把看过的一些学习资源主要是博客,博文推荐分享给大家。 1.前言 6月份开始出没社区,现在差不多9月了,按照工作的说法,就是差不多过了三个月的试用期,准备转正了!一般来说,差不多到了转正的时候,会进行总结或者分享会议!那么今天我就...

    sherlock221 评论0 收藏0
  • 个人分享--web前端学习资源分享

    摘要:前言月份开始出没社区,现在差不多月了,按照工作的说法,就是差不多过了三个月的试用期,准备转正了一般来说,差不多到了转正的时候,会进行总结或者分享会议那么今天我就把看过的一些学习资源主要是博客,博文推荐分享给大家。 1.前言 6月份开始出没社区,现在差不多9月了,按照工作的说法,就是差不多过了三个月的试用期,准备转正了!一般来说,差不多到了转正的时候,会进行总结或者分享会议!那么今天我就...

    Ethan815 评论0 收藏0
  • 前端干货JS最佳实践

    摘要:避免与进行比较避免推荐与进行比较的代码,可以用以下技术进行替换如果值是一个应用类型,使用操作符,检查其构造函数如果值是基本类型,使用检查其类型如果是希望对象包含某个特定的方法名,则只用操作符确保指定名字的方法存在于对象上。 持续更新地址 https://wdd.js.org/js-best-pr... 1. 风格 一千个读者有一千个哈姆雷特,每个人都有自己的code style。...

    Aceyclee 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<