首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

编写维护JavaScript

A.全局变量带来问题 1.命名冲突:全局环境是用来定义JS内置对象地方,如果给这个作用域添加了自己变量,接下来则会面临读取浏览器附带内置变量风险。...3.难以测试:任何依赖全局变量才能正常工作函数,只有为其重新创建完事全局环境才能正确地测试它。 B.意外全局变量 1.给一个未被var语句声明变量赋值时,JS就会自动创建一个全局变量。...2.instanceof运算符也可以检测自定义类型,这也是唯一方法,对于内置JS类型也是如此 3.检测函数最好方法是使用typeof,因为它可以跨帧(frame)使用。...当两次发错误时,将有助于解决问题 2.如果正在编写代码,思考一下“我希望【某些事情】不会发生,如果发生,我代码会一团糟糕”。...这时,如果“某些事情 ”发生,就抛出一个错误 3.如果正在编写代码别人(不知道是谁)也会使用,思考一下他们使用方式,在特定情况下抛出错误 E.try-catch语句 1.try中retrun会等到

85210

如何高效编写维护代码?

在代码中找到一个放错地方并且没有用注释是不是很有趣呢?怎么样才能做到写很少注释但仍能让代码易于理解呢? 一个主要方式就是让代码自我文档化。...当代码自我文档化时候,就不需要注释去它作用或者目的,并且也能使代码变得非常容易维护。 在这篇文章中,我将提供一些让你代码自我文档化方式。...此外,除了上述三种,还有一些应用比较广泛方式: 类和模块接口:将类和模块中函数暴露出来,让代码更加清晰。 代码分组:用组来区分不同代码片段。...你能说出这个类是如何被调用吗?很显然,这并不明显。 这两个函数都应该换个合理名字以表述它们目的。但即便做到这一点,我们还是不怎么清楚如何使用。然后就需要阅读更多代码或者翻阅文档。...制定规则:最好遵循相同命名规则,这样阅读的人就能在参考其他代码基础上正确猜测出各种事物含义。

58130
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    SOLID 原则:编写扩展且维护代码

    如果你写过,其实也没什么好羞愧。在学习过程中,我们都会编写有缺陷代码。但是好消息是对于 “糟糕代码” 进行改进是相当简单,但前提是你愿意改。 改进代码最佳方法之一是学习一些编程设计原则。...这种设计是有问题,因为随着添加更多形状类型,calculate_area() 方法变得更加复杂且难以维护。它违反了职责分离原则,并使代码灵活性和扩展性降低。...就我个人而言,我相信 SOLID 原则永远是好代码设计基础。有时在使用小型应用程序时,这些原则好处可能并不明显,但一旦开始处理较大规模项目,代码质量差异就值得我们努力学习它们。...SOLID 原则是一组编程设计原则,旨在提高软件扩展性、可维护性和质量。它们分别是: 单一职责原则SOLID原则:一个类或模块应该只有一个职责,且该职责应该由该类或模块完全封装。...也就是说,高层模块不应该依赖于低层模块,而应该依赖于它们共同抽象。 通过遵循这些原则,我们可以编写出更加清晰、灵活和复用代码,降低耦合度和代码腐化风险,提高代码测试性和可读性。

    22320

    如何编写干净且维护 JSX

    编写干净且易于维护JSX(JavaScript XML)代码对于Web开发项目的长期成功至关重要。JSX通常用于React应用程序,因此遵循最佳实践以保持代码库组织结构并易于使用是至关重要。...以下是一些建议和策略,帮助你编写整洁且易于维护JSX代码:使用有描述性变量名:选择有描述性变量和组件名称。这使得你代码更具自解释性,有助于其他人理解你代码。...{users.map((user) => ( ))}重用组件:为常见UI元素创建重用组件。...状态管理:在使用Redux或Mobx等状态管理库时,保持组件状态最小化和集中化。避免不必要状态重复。CSS-in-JS或CSS模块:使用CSS-in-JS库或CSS模块将样式限定在组件内。...使用CSS或CSS-in-JS管理样式,而不是内联样式。错误处理:在组件中优雅地处理错误,并使用错误边界防止崩溃传播到整个应用程序。测试:使用Jest和Enzyme等测试框架为你组件编写测试。

    21640

    深入设计模式:编写维护扩展Java代码

    引言在Java编程中,理解和应用设计模式是编写高质量、维护扩展代码关键。设计模式提供了一套在特定场景下解决常见问题经验法则,通过合理运用设计模式,我们能够更好地组织和设计代码结构。...,而Factory是工厂抽象接口。...具体产品和具体工厂分别实现这两个抽象接口,通过工厂来创建具体产品实例。这种方式能够实现对产品和工厂解耦。3....观察者模式观察者模式定义了一种一对多依赖关系,让多个观察者对象同时监听某一个主题对象。当主题对象状态发生变化时,所有依赖于它观察者都会得到通知并更新。...结尾通过学习单例模式、工厂模式和观察者模式等设计模式,我们能够更好地组织和设计Java代码,使其更加灵活、维护扩展。这些模式提供了一套通用解决方案,能够在特定场景下提高代码质量。

    10710

    编写高质量维护代码:数据建模

    本文首发于政采云前端团队博客:编写高质量维护代码:数据建模 https://www.zoo.team/article/data-modeling 什么是数据建模 数据建模是一种用于定义和分析数据要求和其需要相应支持信息系统过程...随着业务复杂,应用层和领域层边界变得模糊,领域之间也容易交错在一起。 良好设计应该避免层与层之间产生过多依赖,如果代码没有被清晰隔离到某层中,它会迅即混乱和难以维护。...工厂 工厂用来封装对象创建所必需知识,它们对创建聚合特别有用。工厂方法是一个对象方法,包含并隐藏了创建其他对象必要知识。 资源库 资源库作为一个全局访问对象存储点而存在。...尝试回想一下你所维护业务(应用)场景,你是否清晰业务场景和业务对象之间关系以及具体交互? 使用思维导图梳理出概念模型,这个阶段可以不用严格遵守三要素,目标清晰表达现实世界就行。 ?...比如某些表单场景在回显和提交时候要多一层转换,后期维护会带来多一层心智负担。在前后端分离开发模式下,不一定能保证后端会先给出字段,我习惯是标记字段,等联调时候全局替换一下就行了。

    39240

    编写高质量维护代码:Awesome TypeScript

    这是第 84 篇不掺水原创,想要了解更多,请戳上方蓝色字体:政采云前端团队 关注我们吧~ 本文首发于政采云前端团队博客:编写高质量维护代码:Awesome TypeScript https://www.zoo.team.../article/awesome-typescript 前言 高质量维护代码应具备可读性高、结构清晰、低耦合、易扩展等特点。...而原生 JavaScript 由于其弱类型和没有模块化缺点,不利于大型应用开发和维护,因此,TypeScript 也就应运而生。...接下去,本文将给大家分享下,TypeScript 重要特性以及在实际场景中使用技巧,帮助大家更高效编写高质量维护代码。...val : '1'); // JS let temp = val ?? '1'; // TS 不要完全依赖于类型检查,必要时还是需要编写兜底防御性代码。

    2.4K10

    编写高质量维护代码:编程范式

    这是第 92 篇不掺水原创,想要了解更多,请戳上方蓝色字体:政采云前端团队 关注我们吧~ 本文首发于政采云前端团队博客:编写高质量维护代码:编程范式 https://www.zoo.team/article...JS 是一种动态基于原型和多范式脚本语言,并且支持面向对象(OOP,Object-Oriented Programming)、命令式和声明式(如函数式编程 Functional Programming...由于 JS 中对象传递是引用地址,即使我们使用 const 关键词声明对象时,它依旧是可以变。这样就会导致我们可能会随意修改对象。...“副作用”,不依赖也不会改变当前函数以外数据,优点在于: 减少了可变变量,程序更加安全; 相比命令式编程,少了非常多状态变量声明与维护,天然适合高并发多现成并行计算等任务,这也是函数式编程近年又大热重要原因...多态表现方式有重写,重载和接口,原生 JS 能够实现多态只有重写。 重写:重写是子类可继承父类中方法,而不需要重新编写相同方法。

    51520

    编写高质量维护代码:优雅命名

    本文首发于政采云前端团队博客:编写高质量维护代码:优雅命名 https://www.zoo.team/article/good-name ? 前言 俗话说得好,万事开头难。...(当然,代码中还是需要一些必要注释)。 所以在命名时候,需要就是直白、完备、有意义,让别人通过命名就能了解到这个名称(无论是变量、方法或者是样式名)背后含义,这样命名就是高效、易懂。...在自己项目中,执行 eslint --init 命令来创建项目的 .eslintrc.js 文件,之后可以在 .eslintrc.js 文件中 rules 规则添加上规范约束条件来使用这个规则 module.exports...modifier-name,其中 Block 与 Element 之间连接是通过 __ 双下划线,Block,Element 与 Modifier 之间是通过 -- 双中划线进行连接,当使用less或者 sass 语法编写...,组件之间结构独立,减少了命名之间冲突,有着不错易读性、维护性等等,但可能会让项目中样式命特别的长。

    45820

    编写高质量维护代码:异步优化

    这是第 77 篇不掺水原创,想要了解更多,请戳上方蓝色字体:政采云前端团队 关注我们吧~ 本文首发于政采云前端团队博客:编写高质量维护代码——异步优化 https://www.zoo.team/article...比如我们熟悉 setTimeout 或者 React 中 setState 第二个方法都是以回调函数方式去解决异步实现。...,使用 await/async 调用异步时候是从上到下,顺序执行,就像在写同步代码一样,这更加符合我们编写代码习惯和思维逻辑,所以容易理解。...增加了对于异步可操作性,类似一个状态机暂时停住多个异步执行,然后在合适时候继续执行剩余异步调用,await/async 让异步调用更加语义化,并且自动执行异步 异步业务中碰到场景 回调地狱...参考文献 JS 异步编程六种方案:(https://juejin.im/post/6844903760280420366#heading-12) Async/Await 替代 Promise 6 个理由

    41920

    编写维护代码之“中间件模式”

    对于严格意义上中间件(平台与应用之间通用服务),例如用于缓解后台高访问量消息中间件,本篇不会去叙述,因为不是本篇论述意图。...言归正传,当我们在编写业务代码时候,我们无法避免有些业务逻辑复杂而导致业务代码写得又长又乱,如果再加上时间紧凑情况下写出来代码估计会更让人抓狂。...相反如果把所有逻辑都柔合在一起,每次写业务都需重复编写数据过滤和日志统计代码,违反了单一职责,高内聚低耦合原则,并且降低代码复用率。...,如果处理不当很容易让维护者看晕,例如下面这样: //提交数据前,验证数据,然后上报,在提交之后做返回首页跳转 function report(){ console.log('上报数据');...从代码阅读和代码编写角度来说难度并不大,只要维护人员拥有该方面的知识,问题就不大了。 我知乎原文:https://zhuanlan.zhihu.com/p/26063036

    2.2K00

    利用 PHP 名称空间编写可读且维护代码

    应用程序由程序员团队编写。 您打算使用框架使用 V5.3 和名称空间。 您在其他语言中使用过名称空间(或包等相似的功能),比如 Java™、Ruby 或 Python 语言。...自动装载器非常方便,所以可以不编写函数,而是在适当命名实用程序类中创建方法并把常量放在不可变类中。...> 注意,正如前面提到,我喜欢把格式化函数放在实用程序类中(这样自动装载器就会处理代码导入,我不需要为 format.php 编写 require 语句)。...对于函数和常量,如果当前名称空间不包含这个函数或常量,PHP 后退机制会后退到标准 PHP 函数。例如,如果您编写了自己strlen 函数,PHP 会解析出您函数。...> 名称空间全局变量和字符串 如果您喜欢编写动态方法,可能想把名称空间放在带双引号字符串中:"denoncourt\retail\controller"。

    1K20

    编写维护代码3:适当抛出错误提示

    编写维护代码规则第3篇。...在js开发中,调试错误是一个比较头疼事,又不像javadebug那么方便,定位错误往往不是那么容易,除非对代码熟悉无比,但即使是自己写代码,功能一复杂,时间一长,再想快速定位问题,至少我现在是比较头疼...此时,如果有一个比较友好错误提示,那解决问题效率将大大提高。 所以是时候学会在合适地方抛出错误提示了。...js中抛出错误方法有两种:throw new Error()抛出错误和try...catch..捕获错误。...通常在抛出错误提示字符串中,应尽量写清错误目标和原因。这样做,当实际调试时,能明确告诉开发者问题定位。 那什么时候需要抛出错误呢? 修复一个自认为较复杂错误后,及时增加相应自定义错误提示。

    1K50

    【译】Go 语言实践:编写维护程序建议

    阅读性对所有的程序——不仅仅是 Go 程序,都是如此之重要,是因为程序是人写并且给其他人阅读,事实上被机器所执行只是其次。 代码被阅读次数,远远大于被编写次数。...编写维护程序第一步,那就是确保代码是可读。...一个好名字另一个特点是它应该是预测。...这个和我惯常形式不同决定,可以让读者意识到这里需要注意。 成为团队合作者 我谈到了软件工程目标,即生成可读,维护代码。而您大部分职业生涯参与项目可能您都不是唯一作者。...c1 \*Config var c2 = &Config{ path: "/export", } fmt.Println(c1.Path(), c2.Path()) } 避免包级别的状态 编写维护程序一个关键方面是松耦合

    2K80

    编写高质量维护代码之优化逻辑判断

    这是第 64 篇不掺水原创,想要了解更多,请戳上方蓝色字体:政采云前端团队 关注我们吧~ 本文首发于政采云前端团队博客:编写高质量维护代码之优化逻辑判断 https://www.zoo.team/...编写高质量维护代码,我们先从最小处入手,一起来看看在前端开发过程中,可以从哪些方面来优化逻辑判断?...如果提前 return 掉无效条件,将 if else 多重嵌套层次减少到一层,更容易理解和维护。...,把它们一个个封装起来, 并且使它们相互替换。...当然,编写高质量维护代码,除了逻辑判断优化,还需要有清晰注释、含义明确变量命名、合理代码结构拆分、逻辑分层解耦、以及更高层次贴合业务逻辑抽象等等,相信各位在这方面也有自己一些心得,欢迎一起留言讨论

    1.1K10

    编写高质量维护代码:组件抽象与粒度

    Vue 官方文档 (https://cn.vuejs.org/v2/guide/components.html)说:组件是复用 Vue 实例,且带有一个名字。...为什么要抽组件 说到为什么要抽取组件,不知道各位读者有没有遇到过一个 js 文件中有 1k+ ~ 2k+ 行 React 代码,甚至更多行代码情况。...这种情况往往导致代码难以维护,当有新需求涉及相关改动时,在一定程度上增加了代码学习成本(特别是当你刚刚新接手了一份完全不熟悉项目的时候)。...还有一种比较好解决方案是通过表单中心生成一份这样页面,参考本团队之前一篇文章《动态化表单设计》。...目前本团队维护业务组件库,可以使开发人员即来即用,组件内部有完善功能和接口数据处理,将组件引入到项目后可直接实现对应功能。

    1.1K10

    8个用于编写维护,简化前端代码CSS策略

    然而,我遇到过很多应用都没有人花时间真正考虑前端开发长久性和可维护性。 我认为这主要是因为许多开发人员对CSS / HTML和JavaScript长久维护缺乏深刻理解。...但是对于团队来说,编写维护前端代码是非常重要。 这篇文章目的不在于规则手册,而在于您正在编写CSS时,更多是要考虑事物指南。...我鼓励你找到你自己编写css流程,这篇文字目的是让你CSS一致,简单,易于使用。 这里有8个秘诀保持您CSS组织和长期容易维护。...2.可以把你css写成重用组件 不要将CSS元素视为每个单独页面上元素,如果您可以定义重用CSS组件以供自己使用,则可以减少很多复杂性。...编写重用css类可以解决一些事情: 它可以确保您设计在不同页面之间保持一致。当你在很多页面上共享你CSS类时,你知道当你改变这个类时,它会在每一个出现在页面上页面上改变。

    1.4K90

    Go语言实战: 编写维护Go语言代码建议

    如果软件无法维护,那么它将被重写;最后这可能是你公司最后一次投资Go语言。 ~如果你正在为自己编写一个程序,也许它只需要运行一次,或者你是唯一一个曾经看过它的人,然后做任何对你有用事。...~但是,如果是一个不止一个人会贡献编写软件,或者在很长一段时间内需求、功能或者环境会改变,那么你目标必须是你程序可被维护编写维护代码第一步是确保代码可读。 1.3....好名字应该描述函数结果或方法行为,而不是它们操作。好名字应该描述包目的而非它内容。描述东西越准确名字就越好。 好名字应该是预测。 你能够从名字中推断出使用方式。...这个决定与我常用形式不同,这给读者一个线索,告诉他们一些不寻常事情将会发生。 2.6. 成为团队合作者 我谈到了软件工程目标,即编写可读及维护代码。...避免包级别状态 编写维护程序关键是它们应该是松散耦合 - 对一个程序包更改应该很少影响另一个不直接依赖于第一个程序包程序包。

    1.9K30

    编写维护代码4:不轻易修改对象方法

    编写维护代码规则第4篇。 本篇主要讲下对象属性与方法修改问题。由于js中修改对象属性和方法简直容易至极,所以任何人都可以更改js具有访问修改权限对象。...这就带来极大风险,容易造成各种奇葩bug问题且难以排查,更别说如果是多人协同开发情况下,某个人改动已有方法时,一旦产生bug,且被其他维护,那找起问题根源麻烦程度简直是想要杀人。...所以为了人生财产安全,在js维护时,个人是不建议对已有对象方法属性进行修改、删除,除非你是对象所有者,了如指掌。...通常对于对象想要修改或新增或删除方法属性时,建议是继承个新对象出来,新对象拥有被继承对象所有属性和方法,且不会影响到原对象在源码中使用。 js继承有两种:基于对象继承和基于类型继承。...,类似基于对象继承,都是从一个已经存在对象中继承,区别在于这里继承是依赖原型

    33320
    领券