问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

减少代码量的 7~8 种方式

发布网友 发布时间:2023-06-13 13:56

我来回答

1个回答

热心网友 时间:2024-11-01 06:03

Copy-Paste 是一件非常有效的开发方式,但是它们一点儿也不适合维护——为了改一个拼写错误,要去修改代码中的七八个文件,打人的心都有了。

如果万一我们是要替换这七八个文件的相应代码,那么就会更加地痛苦。在后端里,我们只需要修改相应的 Java、Go、JavaScript、Python 等语言相关文件的代码。而在前端我们需要修改 HTML/JavaScript/CSS 文件,而哪怕使用的 React 这样的框架里,我们也要修改一个文件的多个地方。

于是乎,作为一个专业的程序员,我们都在不断地寻找方式来复用代码(PS:复制/粘贴从本质上也是一种复用)。

经验总结的复用

经验总结型复用,指的是结合组织和项目的经验,提取出其中的共同部分,以便于在其它项目中继续使用。事实上,所有类型的复用都是经验型复用。因此,这里的经验总结型复用,专指于用在组织内部的复用。从我的认识来看,有以下四类:

脚手架

脚手架是一种快速创建新应用的方式。在脚手架里,我们会总结出过往经验中的模式、代码,将这些模式和代码融入我们其中。其中特色就是结合常用的各种框架,并将它们结合到一起,如后端的:Spring Boot + Spring Eureka + Feign + Zuul 等,如前端的 React + Rex + React Router 等(PS:Angular 就没这么复杂)。

市面上的主流框架,本身是提供了相应的脚手架功能。基于此,脚手架可以分为两类:

两者都有各自的优缺点。框架官方的脚手架缺少一些团队、组织特定的因素。而自制的脚手架则需要团队长期维护。不过,出于种种原因(诸如 KPI),我们都会维护自己的脚手架,你说呢?

组件库(客户端)

组件库,对于每个 Web 项目来说,都是必不可少的元素。它适用于客户端开发的 UI 复用。组件库本身分为三个层级:基础 UI 组件、复合组件、业务组件 。

一般而言,我们会使用第三方的基础 UI 组件库。在那的基础之上,封装自己的业务组件库。又或者是,再对基础 UI 组件库进行二次封装,以降低对第三方组件库的依赖,让其变成可替换的组件库。

模式库

模式库其本质仍然是一个代码集,它将我们常用的代码提取出一个公共的类库中。按分类上来说,组件库也是模式库的一种。为了方便于服务端与客户端开发区别,我将组件库独立出来。

模式库,是出于共用的目的而提取出来的。在不同的项目中,它的表现形式略有差异:

两种方式也是各有优缺点。前者维护容易出错,后者更新不方便。

模板和模板应用

组件库和模板,实质上是设计系统的一部分。设计系统是一组相互关联的设计模式与共同实践的,以连贯组织来达成数字产品的目的。它包含了以下的五部分:

而模板应用,则是在模板的基础上,进一步地整合而成,用于帮助开发人员快速的构建某一类型的应用。对应于其它类型的应用而言,则要判断是否会出现相似的应用。

工具

上述的四种方式,是比较常见的方式。而随着,我们项目数量的变多,开发人员数量的膨胀,它们开始变得麻烦。我们便需要编写一些工具,以节省大量的人力成本。

CLI

这里的 CLI 是指自制的 CLI,它与我们编写的一系列自动化代码工具相互配合,形成自己的解决方案。

其交互诸如于:

我们便可以将把配置、组件安装等一系列的工作自动化。

Schematics

Schematics 来自于 Angular 团队,其本质上也是 CLI 的一种,只是它相对于 CLI 来说,编程起来更加的简单。它将我们在编程 CLI 过程中的一些通用模式,整合出来融入了代码中。换句话来说,它相当于是前端工具中的 Angular、React——只需要编写业务逻辑,而不需要关注于基础架构。

它是现代 Web 的工作流程工具; 它可以将修改应用于您的项目,例如创建新组件或更新代码以修复依赖项中的重大变更(PS:有点类似于后端数据库脚本的味道)。还可以向现有项目添加新的配置选项或框架。

编程器插件

编程器插件,是一个非常有意思的思路。我们可以编写一个编辑器插件,在插件中加入我们常见的代码、模式和模板等。如在 VS Code 中,我们只需要创建对应的:

就此可以用于代码生成和智能感知。对于一个框架来说,我们只需要定制好框架相应的组件、模式代码,就可以复用它们。

设计系统与代码生成

当我们有了一个成体系的设计系统,就可以使用诸如 Storybook 这样的框架来优化组件的使用。它可以让我们在查看组件文档的同时,配置上相应的组件参数,最后我们只需要复制结果代码,到我们的工程中使用即可。

其与一般的组件库使用相比,更加的轻便,易于使用。

下一步,我们就是等 AI 来生成代码了。对于拥有设计系统的项目而言,我们可以直接通过类似于 Sketch2Code 的工具,直接将我们的设计转换为代码。但是,实质上这是一种更复杂的模式。对于拥有设计系统的项目来说,我们可以将设计转换为元数据。

结论

降低程序员的代码量,就是效率的提升。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
神经再造综合疗法概述 能拍4k60帧的3d相机 索尼a7r5拍4k60帧有裁切吗 BNT脑神经递质导融激活疗法疗法原理 BNT脑神经递质导融激活疗法疗法的六大特点 BN脑神经平衡介入疗法效果怎? ...事件要有时间在叙述一两句,就O了,寒假作业要交的 2011年天津各大高职院校 寒假的开学时间是什么时候 有一个就回答一个... [综恐]这什么鬼东西!/what the fuck ! 89 综恐 这什么鬼东西80 手机摄像头没拍照过了一会没退出后台直接拍照会显示什么 工地吃的油为啥味道难闻 猫长期黄鼻涕怎么回事 应该是猫感冒了 python定义一个二维列表不赋初值 语言发展理论的主要派别有 简述乔姆斯基关于语言获得的理论和贡献。 转换生成语法理论的主要概念有 ...天生就有学习语言的能力且体现在一种语言获得装置中的教育家是谁... language+acquisition+device是什么意思 女士手链尺寸对照表 物业需要考取什么证书 梦见邻居家墙倒了的预兆 液化气怎样安全把它释放掉 哪个神奇宝贝同时拥有水 电系 口袋妖怪灯笼鱼什么时候有蓄电 收了老公的转账怎么幽默的感谢 显示2个电信卡,为什么只能用其中一个打电话 thanks的音标怎么写 请问酒店的前台接待出的系统怎么操作? 栾川县巾帼家政电话 如何在野外采捕食物 野外常识有哪些呢? 1.植物类食物识别的一般程序 2.寻找猎物的途径 3.家庭避雷的方法 房产证更名如何办理?房产证更名流程 有待规范,新能源汽车维修市场参差不齐 三氯甲硅烷硅的价态 ...制备硅半导体材料必须先得到高纯硅.三氯甲硅烷(SiHCl3)还原法是当... 什么叫中位值,还有分位值? 闪电借款能换手机号吗不是很了解 闪电借款怎么知道我新位置的 闪电借款怎么知道我现在的地址 本人在闪电借款借过钱,因为手机空号拉,有身份证和本人相片,如何去查 ... 我擦,闪电借款是怎么知道我初中同学电话的呢 《流光之城》容芳桦结局是什么? 流光之城的芳桦怎么了 流光之城芳华结局 流光之城容芳桦怎么了? 《流光之城》荣芳桦伍云驰结局 芳桦流光之城结局 《流光之城》芳桦结局是什么?