JavaScript重构(四):JavaScript编码规则

重构Javascript代码示例(重构前后对比) 回顾头来看看那些Javascript脚本,有写得不太理想,过于复杂。现抽取出来,重构它们,想学习javascript重构的朋友可以参考下啊,网本文可以帮助你的 立即下载

没有规矩,不成方圆,JavaScript带来了灵活性,也带来了不受控的变量和访问,所以要用规则限制它。一支成熟的团队,还是一支新鲜的团队,规则应当是不一样的,我只是列出一些常见的或者有效的办法,来约束跳跃的开发人员,思维可以任意飞跃,代码却要持续受控。当然,任何规则都是建立在一定的认知基础之上的,面向对象JavaScript的基础是必备的,否则一切无从谈起。

 

变量和方法控制:

模块开发不允许存放独立的全局变量、全局方法,只允许把变量和方法放置到相应模块的“命名空间”中,对此的解释请参见此文。实在心痒了,那么使用匿名函数如何?

(function() {
    var value = 'xxx';
    var func = function() {...};
})();

模块化需要严格控制住代码的区域性,这不仅仅是代码可维护性、可定制性的一方面,同时也让JavaScript引擎在属性和方法使用完毕后及时地回收掉。

不允许在模块代码中污染原生对象,例如

String.prototype.func = new function(){...};

如此的代码必须集中控制,例如统一放置在common.js中,严格保护起来。

 

数据存放约束:

普通变量、prototype变量和function变量分而治之,方法名一律大写开头,变量名还是遵从骆驼命名法如何:

function T(name){
    T.prototype._instance_number++;
    this.name = name;
    this.showName=function(){
        alert(this.name);
    }
};
T.prototype = {
    _instance_number:0, 
    getInstanceNum: function(){ 
        return T.prototype._instance_number;
    }
};

var t = new T("PortalONE");
t.showName();
new T("Again");
alert(t.getInstanceNum()); //打印:2

这里有意做了一件事情,T内部的属性和私有方法使用下划线开头,这样很好地实现了封装(上述代码中如果使用t.instanceNum,是无法访问到这个值的),如果这段代码都看不懂的话,赶紧温习一下JavaScript的面向对象吧 :)。JavaScript中提供了闭包和原型两种办法来实现继承和多态,关于重构中应用这一点,后续的章节我再啰嗦吧。

另外,优先使用JavaScript的原生对象和容器,比如Array,Ajax的数据类型统一切到JSON上来,尽量不要使用隐藏域;另外,通常是不允许随意扩展DOM对象的。

至于模块间的通信:模块间的通信意味着模块间的耦合性,是需要严格避免的;通信的途径通常使用方法级属性或者模块级的prototype变量。

 

DOM操纵规则:

在模块代码中,通常要求把对DOM的操纵独立到模块js中,应当避免在DOM模型上显示地写时间触发函数,例如:

<div onclick="xxx" />

借助JQuery基于bind的一系列方法,把行为逻辑独立出来以后,完全可以看到清爽的HTML标签。

DOM对象的访问通常使用id来查找,偶有根据name来查找的,过多次数地、不合理地遍历DOM树是前端性能保持的大忌。

 

CSS的样式控制:

(1)尽量拒绝style="xxx"的写法,主要目的是将样式统一到主题样式表单中,当然主题样式表单也是按模块存放的,对于不同语种的定制和不同风格的切换带来便利。

(2)规约JavaScript对样式的操纵,理想状况下,封装性好的UI可以自由地替换它的样式集合。

 

以上只能算冰山一角,抛砖引玉,实际项目中需要在开发过程中逐步细化和完善。

arcgis根据矢量范围统计栅格数据众数、最大值、均值、中位数、最小值、少数等 像元统计数据 根据多个栅格数据计算每个像元的统计数据。 可用的统计数据有:众数、最大值、均值、中位数、最小值、少数、范围、标准差、总和及变异度。 https://desktop.arcgis.com/zh-cn/arcmap/10.3/tools/spatial-analyst-toolbox/an-overview-of-the-local-tools.htm ... 阅读详情

相关推荐

SRA数据下载的一个坑

SRA数据真坑啊!

xuzhougeng blog 3508

javaScript 重构

这篇文章主要介绍“JavaScript中如何重构代码”的相关知识,综合汇总,通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强。

a520bcd的博客 530

LabVIEW面向对象编程:操作者框架入门实战

本文是LabVIEW面向对象编程中操作者框架的入门实战指南。针对传统“面条式代码”在复杂项目中的维护难题,文章通过创建操作者、定义消息与处理函数、在主VI中调用等步骤,详细演示了如何利用操作者框架构建模块化、易扩展的应用程序架构,有效管理并行任务。

f0g1h2的博客 589

JavaScript 代码优化重构

我们先引入一句话:代码主要是为了写给人看的,而不是写给机器看的,只是顺便也能用机器执行而已。代码和语言文字一样是为了表达思想、记载信息,所以写得清楚能更有效地表达。本文多数总结自《重构:改善既有代码的设计(第2版)》

hmhmhm0319的博客 512

Python多版本共存指南:用CMD命令一键切换3.6和3.8解释器(含pip使用技巧)

本文详细介绍了在Windows CMD环境下实现Python多版本(如3.6和3.8)共存与一键切换的完整方案。通过文件重命名策略、环境变量优化和自定义脚本,开发者可快速切换Python解释器版本,并管理各版本独立的pip依赖库,确保项目环境隔离与兼容性。

weixin_29035405的博客 423

模仿学习算法——ATC / Diffusion Policy

最近又开始接触具身智能相关的一些工作,本文主要介绍三篇较为基础的用来做模仿学习的算法,后续有空再进一步学习分享RT系列和Pi0等文章ACT算法全称为Action Chunking with Transformers,发表于《Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware》,该论文主要内容为如何使用低成本的硬件和模仿学习算法来实的双手操作,我们主要对算法部分进行剖析ACT算法的网络结构如下图所示,使用的采用的是生成式模型VA

weixin_44580210的博客 5251

JavaScript重构(汇总帖)

前一阵集中一段时间做了JavaScript的重构,留下了一点点脚印,在这里汇总一下。如果您对这一专题感兴趣,或者希望补充一些内容,欢迎留言,我会在后续更新进去。谢谢。   JavaScript重构(一):模块划分和命名空间 模块划分是JavaScript重构的原则之一,也是

四火专栏 2631

ArcGIS Pro 3.4 二次开发 - 布局

本文介绍了在ArcGIS Pro SDK 3.4和.NET 8环境下操作布局工程项的相关方法。主要内容包括:引用布局工程项和关联布局,在新视图中打开或激活已有布局视图,引用活动布局视图,导入/移除布局工程项,创建基本布局或带参考线的自定义布局,修改布局页面尺寸,以及创建圆形图形元素等操作。重点演示了如何通过CIM(Core Infrastructure Model)进行高级布局配置,并详细说明了圆形图形元素的创建过程,包括几何构建、符号设置和图形生成。所有涉及UI线程的操作都遵循ArcGIS Pro SDK

Winemonk 795

JavaScript 列表重构

最近碰到一个将矩阵转置(Transpose)的问题,有人会说这还不简单,写个函数就解决了:function transpose(matrix) { ... } Naive。让我们用函数式的眼光重新分析这个问题。

1010

英伟达 Jetson AGX Thor 官方入门教程(一)系统U盘安装

NVIDIA Jetson AGX Thor开发套件快速安装指南 本指南详细介绍了NVIDIA Jetson AGX Thor开发套件的安装流程。该套件搭载T5000 SoM,为物理AI和机器人应用提供强大支持。安装过程采用全新的JetPack 7.0方案,通过USB闪存盘即可完成BSP(Jetson Linux)安装,无需依赖Ubuntu主机。指南包含硬件开箱说明、两种配置模式(带显示器/无显示器)、详细的ISO镜像下载和USB制作步骤(推荐使用Balena Etcher工具),以及首次启动后的初始设置流

机器人控制与仿真应用 2867

基于 Arduino 的鱼缸水质检测控制系统设计

本系统通过多传感器实时采集鱼缸水质参数(pH 值、温度、溶解氧、浊度),经 Arduino 主控芯片处理后,驱动执行模块自动调节水质,并通过显示模块实时展示数据。系统具备阈值报警、自动换水、温度调节、增氧等功能,适用于家庭或小型水族箱的水质智能管理。本设计提供了低成本、易扩展的鱼缸水质管理方案,适用于家庭水族箱或小型水产养殖场景,可根据实际需求调整传感器类型和控制逻辑。注:本设计如有疑问需要解惑可直接私信本人,看我个人简介。

weixin_42300449的博客 1086

js3-mode:一款兼容多种风格的JavaScript编辑模式

js3-mode:一款兼容多种风格的JavaScript编辑模式 在现代Web开发中,JavaScript作为核心技术之一,其开发效率和代码质量的重要性不言而喻。emacs编辑器作为一个历史悠久且功能强大的文本编辑器,拥有许多扩展插件来提高编程效率。今天,我们要介绍一款名为js3-mode的emacs插件,它不仅支持多种JavaScript编码风格,还特别兼容npm风格。 项目介绍 js3-mod...

gitblog_00460的博客 1035

045、镜头模组公差链分析:从 Lens 到 Sensor 的装配公差累积与良率优化

本文深入分析了镜头模组从镜片到传感器各环节的公差累积问题及优化策略。文章首先剖析了四级公差链(镜片单体、镜筒装配、VCM定位、传感器贴装)的误差传递机制,指出各环节典型公差值及其影响(如5微米镜片偏差可导致0.02度光线偏折)。其次对比了最坏情况法与均方根法的差异,强调需考虑公差相关性(如镜片曲率与镜筒间隙的正相关性)。最后提出良率优化"三板斧":通过蒙特卡洛仿真优化公差分配、采用主动对准工艺在线补偿、建立数据反馈闭环系统,并结合"阴阳脸"案例说明如何定位根因(模具磨损+贴片机老化导致的误差叠加)。作者总结

sundong_81的博客 59

JavaScript重构(三):JavaScript的测试

进行JavaScript重构时,我希望引入易于使用的测试框架来保证重构的顺利进行,未来能持续通过测试代码对JavaScript逻辑的正确性做保障。 JsUnit (http://sourceforge.net/projects/jsunit/,http://www.jsunit.net/) JsUnit是一个独立的JavaScript单元测试框架,和JUnit差不多,没有上手难度,包括传统的setUp和tearDown,提供的assert方法也和JUnit类似,多了assertNaN和assertUnd

四火专栏 7112

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

重构javascript_javascript重构初学者指南

重构javascriptWhen you’re first starting out in your coding journey, building a web page/application seems so far out of reach. When you finally feel ready to create you very first app, your main priori...

weixin_26717681的博客 449

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

javascript 编码_7种javascript编码标准以提高可读性

javascript 编码 重点 (Top highlight)Coding standards can help with the below: 编码标准可以帮助以下方面: Keeps the code consistent 保持代码一致 Easier to read and understand 易于阅读和理解 Easier to maintainer 易于维护 Easier to refa...

weixin_26735933的博客 589

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

基于规则架构风格对业务的重构

本文探讨了基于规则的架构风格在业务系统中的应用,通过将业务逻辑从代码中抽离为独立规则文件,提高系统可维护性。文章介绍了Java和Python生态中的主流规则引擎,重点分析了ZEN Engine这一跨平台开源规则引擎的特点。ZEN Engine采用JSON格式定义规则,支持Python/Go/NodeJS集成,通过案例演示了如何实现电商折扣规则管理。文章指出这种方案相比硬编码方式更符合开闭原则,能有效应对频繁变化的业务需求,同时提供了ZEN Engine的实践指南和官方资源参考。

weixin_45809780的博客 948

javascript-style-guide :Airbnb JavaScript 编码规范

#javascript-style-guide :Airbnb JavaScript 编码规范 在当今的软件开发领域,JavaScript 已成为构建动态网站和应用程序的基石。为了确保代码的可读性、可维护性和一致性,制定一套统一的编码规范至关重要。Airbnb 的 JavaScript 编码规范正是为了这一目标而诞生,它提供了一套合理的编码实践,适用于所有的 JavaScript 开发者。 项目介...

gitblog_00439的博客 1112

15个可提升编码技能的JavaScript工具

JavaScript库是一些预先编写好的JavaScript文件集合,用来让 JavaScript应用开发更加便捷,尤其是AJAX和其他web开发。JavaScript的最主要用途是编写HTML中嵌入的函数,对页面的 DOM(Document Object Model)进行操作。本文中我们整理了 15  个JavaScript工具,来帮助你提高编码技能,更快、更轻松地完成工作。以下JavaScri...

qq_42485526的博客 301

推荐文章:探索代码重构的新境界 —— JS CodeFormer

推荐文章:探索代码重构的新境界 —— JS CodeFormer 随着前端开发的日益复杂化,高效的代码重构工具已成为开发者不可或缺的伙伴。今天,我们向您隆重推荐【JS CodeFormer】—— 前端代码重构领域的新生力量,源于JS Refactor的精髓,超越其前辈,以其卓越的性能和广泛的支持范围,等待每一位追求编码效率与质量的开发者。 项目介绍 JS Refactor,在经历了一段辉煌的历史后...

gitblog_00581的博客 547

js-assistant:为JavaScript开发者带来超120项代码增强功能

js-assistant:为JavaScript开发者带来超120项代码增强功能 在现代Web开发中,JavaScript、TypeScript、React 和 Vue.js 构成了前端开发的核心技术栈。而为了提高开发效率和代码质量,拥有一款功能强大的代码辅助工具是必不可少的。今天,我将向您推荐一个开源项目——js-assistant,它为Visual Studio Code编辑器增加了超过120...

gitblog_00393的博客 1030

重构你的javascript代码

重构,对于每个开发者都至关重要,特别是对于那些需要进阶的高级程序员。根据二八理论,20%的重构方法,能解决80%的坏代码。笔者最近查阅较多js编码指南以及重新阅读了《代码整洁之道》、《重构:改善既有代码的设计》两本经典书籍(强烈建议每隔一段时间看,每次都有新体会),整理出以下几个要点,帮助大家以最小的记忆,重构大部分坏代码。如果想全面了解重构方式,可以看笔者整理的AI Javascript风格指南...

weixin_33788244的博客 311

css 重构_如何重构CSS –指南

编者注:本文是我们的代码优化系列的一部分,我们在其中探讨如何优化编码以提高效率,以期成为更好的编码人员。 如果我们要拥有可管理和优化的代码库,那么CSS重构就必须成为前端开发工作流程的重要组成部分。 重构CSS时,我们会清理并重新组织现有代码,而无需添加任何新功能或修复错误。 重构有助于防止CSS爆炸,提高代码的可读性和可重用性 , 并使CSS更时尚,更快速地执行 。 通常需要一段...

cune1359的博客 585

js2-refactor.el:提升JavaScript开发效率的Emacs插件

js2-refactor.el:提升JavaScript开发效率的Emacs插件 在现代的Web开发中,JavaScript作为主流的前端编程语言,其开发效率和代码质量尤为重要。Emacs作为一款强大的文本编辑器,其通过插件扩展功能的能力备受开发者喜爱。今天,我们将介绍一款名为js2-refactor.el的Emacs插件,它为JavaScript开发者在Emacs中提供了丰富的代码重构功能。 项...

gitblog_01043的博客 878
上一篇: JavaScript重构(三):JavaScript的测试
下一篇: JavaScript重构(四):JavaScript编码规则
RayChase
博客等级 码龄20年 71粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值