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

测试代码味道

但是在重构过程中,发现有些测试都是没有意义,所以我变转向开始研究测试坏味道,顺便在 Coca 中写了个识别代码测试坏味道工具。...测试反应开发人员水平 与编写业务代码相比,测试代码才能真正体现开发人员水平。你可以用测试来判断开发人员水平: 有没有为自己代码编写测试? 测试中有没有断言? 测试中有没有包含有效断言?...我们一般谈论代码坏味道时候,主体是项目代码,而测试代码坏味道则往往被人忽略了。测试代码能直观地反应出代码设计问题,它们是 API 使用方,它们是 API 第一等使用方。...坏味道检测工具 欢迎成为 Coca 忠实用户,只需要运行 coca tbs,就可以识别出你 Java 代码中测试味道。如下是 Arduino 源码中测试坏味道: ?...对 Coca Pro 有兴趣可以我们联系,哈哈哈哈。 结论 回到开头:《敏捷宣言》上原文是,『坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强』。

1.5K50

架构治理基石:基于规范 + 模式工具

也因此,在架构治理上,我们可以用一些简单元素来进行概括。 模式。寻找坏味道,并使用好设计来改进它。 规范。一个关于架构决策文档化。 规则 。...规范工具化与形式化表示 于是乎,在我们场景下,架构治理方案就可以围绕于三个要素来构建。 模式:坏味道与好方案 在我们行业里,会将解决特定问题解决方案称之为模式,如设计模式、架构模式。...诸如于在英语中,常见句型可以是:主语-谓语-宾语-宾语补足语(英语四级没过,这简直是噩梦)。围绕于这些规则,便可以构建一系列自动化检测工具。...这样工具,也可以我们使用 Java 编写企业应用时,用 Checkstyle;又或者是使用 TypeScript 编写前端应用时,用 ESLint。...回到编程来治理问题上,从过程上来说,我们治理架构问题方式是: 设计、寻找对应规范(即最佳实践) 人为识别代码中模式,随后通过编写代码匹配,即规则。

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

前端自动化重构

如何构建前端自动化重构工具? 在我之前写那篇『重构自动化』中,介绍了如何去做这样工具: 构建特定语言语法解析器。 设定代码坏味道内容及标准。 针对于每一项坏味道,编写识别代码。...编写代码坏味道建议改进和实施代码。 实现坏味道自动化重构。 以 Vue 为例,这个过程便是: 寻找适用于 Vue AST 生成工具。...针对该问题寻找改进点 实现自动化重构 让我们来看个简单示例,如我们代码规范中,针对于组件库强制规范了一定要写 scoped。而我们有大量组件都没有相应实践。这个时候,就可以通过这种方式来处理。...JavaScript 如果只是针对于简单 JavaScript 重构来说,我们可以考虑使用 jscodeshift 这一类工具。...TypeScript 官方提供了 AST 解析。 从我之前写前端架构守护工具:https://github.com/phodal/dilay,你就可以看到相似的代码。

36610

开源 UnitEval —— 构建 AI 辅助编程高质量数据集与代码模型微调评估

诸如于代码复杂性、代码坏味道、测试坏味道、API 设计味道等。 可扩展质量阈。自定义规则、自定义阈值、自定义质量类型等。 总的来说,UnitEval 所要解决是生成高质量数据集。...PS:由于我最近没有算力资源,暂时只是让输入和输出满足所有设计。 为什么是 Unit Eval?...统一工具-微调-评估底层提示词。 代码质量管道(Pipeline)。诸如于代码复杂性、代码坏味道、测试坏味道、API 设计味道等。 可扩展质量阈。自定义规则、自定义阈值、自定义质量类型等。...在 UnitEval 中,我们也将代码质量筛选构建成 pipeline 方式: 代码复杂度。在当前版本设计里,可以直接通过代码复杂度来决定是否放代码文件进入数据库。 不同味道检查类型。...设计原则 3:可扩展质量阈 在现有的设计里,我们将 code-quality 作为一个独立包发布到 Maven 仓库中。你可以根据不同场景和能力,结合不同规则来进行。

41521

代码分析与自动化重构工具集:Modernizing

必要交互性。用于在重构过程中,寻找合适切入点。 定制化开发。 特定坏味道。不同开发团队会有不同味道,有些坏味道是无法由 Sonarqube 这样工具识别的。 自动化重构。...在参考了 ArchUnit 语法之后,我们设计了一个多语言架构守护工具:Guarding。...针对于 CSS/LESS/CSS 分析和自动化重构工具:Lemonj,TypeScript 语言,GitHub stars:128。...当时设计主要目的是:用来对 CSS 中颜色进行提取,基于 Antlr 语法树分析,可以用于进行自动化重构。...针对于多语言工具我们有: 基于 Antlr 多语言语言模型分析工具:Chapi,Kotlin 语言。其设计初衷是用于生成 Coca 相同数据结构,以接入更多可视化工具

1.3K30

半天掌握TypeScript,感觉就像写Java

作为一个后端,写JavaScript真的是有一种写吐了感觉。万幸现在有了更好选择。 为什么要学习TypeScript呢?因为它语法和Java真的很像。...有了这个东西,就可以摆脱恼人JavaScript,拥抱前端技术栈。 TypeScript是JavaScript超集。意思就是在ts中可以直接书写js。...类似Java中变参意思 as 是一个关键字,我们可以理解为Javacast,但它也仅仅是语法检查而已,运行时并无法控制。...两者语法有细微差别,同时type可以定义更多类型,比如基本类型、联合类型、元组等 class 可以在里面实现方法,有点Java味道了,所以不会被编译器抹除。...开发工具 tsc是typescript编译器。如果编译出错,可以指定底层语法特性。 tsc --target es6 建议配置在tsconfig.json文件里,会被自动识别

1.3K20

写了这么多年代码,你真的了解SOLID吗?| 洞见

分离不同角色关注点,分离不同时间关注点。 ? 在实践中,怎么运用单一职责原则呢?什么时候要拆分,什么时候要合并?我们看看新厨师在学炒菜时,是如何掌握“盐少许”。他会不断地品尝,直到味道刚好为止。...写代码也一样,你需要识别需求变化信号,不断“品尝”你代码,当“味道”不够好时,持续重构,直到“味道”刚刚好。...我们先看看为什么要有开闭原则。假设你是一名成功开源类库作者,很多开发者使用你类库。如果某天你要扩展功能,只能通过修改某些代码完成,结果导致类库使用者都需要修改代码。...什么时候应该应用开闭原则,怎么做到呢?没有人能够在一开始就识别出所有扩展点,也不可能在所有地方都预留出扩展点,这么做成本是不可接受。因此一定是由需求变化驱动。...如果你有领域专家支持,他可以帮你识别出变化点。否则,你应该在变化发生时来做决策,因为在没有任何依据时做过多预先设计违反了Yagni。 实现开闭原则关键是抽象。

72910

《重构-代码整洁之道TypeScript版》第一天

《重构--改善既有代码设计第2版提供了 JavaScript 版本,已经非常方便我们前端同学阅读了,但是在 TypeScrip 如此火热今天,缺了 TS 版本,始终觉得是些遗憾,所以老袁打算每天拿出一些时间将一些非常经典案例...,结合老袁十年经验总结到一块使用 TS 重写,希望能陪伴各位技术成长之路,我会从大致如下方向跟各位共同分享: 利用npm有效工具校验代码味道 使用Jest等前端测试工具构筑测试体系 使用TypeScript...希望你能和我一起完成这段旅程,写出整洁TypeScript什么是重构 ? 简单理解就是不改变软件可观察行为前提下,改善其内部结构,以提高理解性和降低修改成本。 何时开始我们重构?...,减少了过长参数(它是代码味道Data Clnmps,坏味道不是翻译尴尬是坏味道包含如下),后面也会给大家逐步介绍。...,我们可以修改getCustomer主动去寻找Customer实例。

1.1K30

深度讲解TS:这样学TS,迟早进大厂【21】:代码检查

未来属于努力奋斗我们! 有什么关于前端疑问,可以问博主就好啦,知无不言哦~ 关注公众号:敲代码小江,获取大厂面试题与视频讲解,了解职业发展前景。...对于未定义变量 myNane,tsc 和 eslint 都可以检查出来。 由于 eslint 无法识别 myName 存在哪些方法,所以对于拼写错误 toString 没有检查出来。...可以运行下面的脚本来安装: npm install --save-dev eslint 由于 ESLint 默认使用 Espree 进行语法解析,无法识别 TypeScript 一些语法,故我们需要安装...要在 VSCode 中集成 ESLint 检查,我们需要先安装 ESLint 插件,点击「扩展」按钮,搜索 ESLint,然后安装即可。...但前端社区中有一个更先进工具可以用来格式化代码,那就是 Prettier。 Prettier 聚焦于代码格式化,通过语法分析,重新整理代码格式,让所有人代码都保持同样风格。

2.5K20

22 个让 React 开发更高效更有趣工具

以下是 2019 年大家可以用来构建 React 应用程序 22 个工具(该列表没有按它们重要性排序)。...好了,我们可以用 webpack-bundle-analyzer 来查看,它将帮助我们识别出占用最多空间输出文件。 它将创建一个实时服务器,并向我们提供捆绑包内容交互式可视化树状图。...借助此工具包,我们可以查看所显示文件位置,它们 gzip 大小,解析后大小及其所属父子级文件。 有什么好处?我们可以根据看到图示来优化我们 React 应用!...这是 React 开发中最常见扩展插件,并且是 React 开发人员用来调试其应用程序最有用工具之一。 9. ...React Sight 大家有没有想过自己应用程序在流程图中看起来是什么?React -sight 可以让整个应用程序以树状图形式展示层次结构,清楚查看我们 React 应用程序。

2.1K31

22 个让 React 开发更高效更有趣工具

以下是 2019 年大家可以用来构建 React 应用程序 22 个工具(该列表没有按它们重要性排序)。...好了,我们可以用 webpack-bundle-analyzer 来查看,它将帮助我们识别出占用最多空间输出文件。 它将创建一个实时服务器,并向我们提供捆绑包内容交互式可视化树状图。...借助此工具包,我们可以查看所显示文件位置,它们 gzip 大小,解析后大小及其所属父子级文件。 有什么好处?我们可以根据看到图示来优化我们 React 应用!...这是 React 开发中最常见扩展插件,并且是 React 开发人员用来调试其应用程序最有用工具之一。 9. ...React Sight 大家有没有想过自己应用程序在流程图中看起来是什么?React -sight 可以让整个应用程序以树状图形式展示层次结构,清楚查看我们 React 应用程序。

10.2K31

【React】653- 22 个让 React 开发更高效更有趣工具

以下是 2019 年大家可以用来构建 React 应用程序 22 个工具(该列表没有按它们重要性排序)。...好了,我们可以用 webpack-bundle-analyzer 来查看,它将帮助我们识别出占用最多空间输出文件。 它将创建一个实时服务器,并向我们提供捆绑包内容交互式可视化树状图。...借助此工具包,我们可以查看所显示文件位置,它们 gzip 大小,解析后大小及其所属父子级文件。 有什么好处?我们可以根据看到图示来优化我们 React 应用!...这是 React 开发中最常见扩展插件,并且是 React 开发人员用来调试其应用程序最有用工具之一。 9....React Sight 大家有没有想过自己应用程序在流程图中看起来是什么?React -sight 可以让整个应用程序以树状图形式展示层次结构,清楚查看我们 React 应用程序。

2K20

2019年,React 开发者应该掌握 22 种神奇工具

以下是 2019 年大家可以用来构建 React 应用程序 22 个工具(该列表没有按它们重要性排序) 1. webpack-bundle-analyzer 大家有没有想过自己应用程序哪些包或哪部分占用了全部空间...好了,我们可以用 webpack-bundle-analyzer (https://url.leanapp.cn/kIPVmmv)来查看,它将帮助我们识别出占用最多空间输出文件。...它将创建一个实时服务器,并向您提供捆绑包内容交互式树图可视化。借助此工具包,您可以查看所显示文件位置,它们 gzip 大小,解析后大小及其所属父子级之间详情。 好处是什么呢?...我们要做就是在末尾加上 typescript: npx create-react-app --typescript 这会帮我们省去给 CRA 项目手工添加 TypeScript 麻烦。...这是 React 开发中最常见扩展插件,并且是 React 开发人员用来调试其应用程序最有用工具之一。 9.

2.4K20

2023前端技术盘点与2024技术展望

首先,TypeScript 从命名空间转移到了模块中,这使我们能够利用现代构建工具来执行优化,如作用域提升,此外还删除了一些废弃代码。...由此可以预测,Rust 工具将会更加深度地融入前端生态,说不定会掀起新一轮前端基础建设浪潮,让我们拭目以待。...● 限制远程代码执行 Manifest V3 禁止扩展执行远程代码,所有的代码都必须包含在扩展包中。这可以防止扩展用来执行恶意代码。...由于设计稿和代码使用是同一套设计系统,设计稿中组件和最终代码中组件是一一映射关系,因此无需进行标注就可以实现组件精准识别。...因此我们可以得知,ArkTs 是 TypeScript 超集,在保留 TypeScript 基本语法风格基础上,提供更加强大功能。

1K10

“用调评” 一体化:生成上下文数据集,改善 AI 测试生成质量

作为一个经常刷测试覆盖率,以及在 ArchGuard 中构建了测试坏味道分析检查工具工程师,我大抵可以算得上是一个经验老道单元测试专家。...其它可能还有诸如于缺少测试断言等其它测试坏味道,所以上述信息就变得非常有必要。基于我们积累下来单元测试与 IDE 插件经验,便需要考虑一体化工程思路。 为什么基于开源模型微调?...统一工具-微调-评估底层提示词。 代码质量管道(Pipeline)。诸如于代码复杂性、代码坏味道、测试坏味道、API 设计味道等。 可扩展质量阈。自定义规则、自定义阈值、自定义质量类型等。...统一提示词:识别基础元素 在 AutoDev 中,会从 Project 中读取依赖管理工具 LibraryData 进而构建出对应测试框架等信息。...当然了,还需要依旧测试类型进一步演进。 总结 与编写一个可以 AI 辅助编码工具,如何持续演进整体架构更有挑战。

14610

21个让React 开发更高效更有趣工具

为了保证可读性,本文采用意译而非直译。 下列工具重要性与排序无关。 1.Webpack Bundle Analyzer 有没有想过你应用程序哪些包或哪部分代码所占总大小多少?...还有什么比 npx create-react-app 更简单呢 咱们还有些人可能不知道是如何使用CRA创建TypeScript项目,这个也很简单,只需要在末尾添加--typescript...这是React开发中最常见扩展插件,并且是React开发人员可以用来调试其应用程序最有用工具之一。 9. Bit 通过Bit可以看到数以千计开源组件,并允许还可以使用它们来构建项目。...Highlight Updates 这可能是开发工具包中最重要工具。 Highlight Updates是React DevTools扩展一个特性,可以查看页面中哪些组件正在不必要地重新渲染。...因为可以在此找到批量有用资源,这些资源肯定会帮助我们构建出色React应用程序! 21.

2.4K30

穿越时空:2023年前端技术盘点与2024年技术展望

首先,TypeScript 从命名空间转移到了模块中,这使我们能够利用现代构建工具来执行优化,如作用域提升,此外还删除了一些废弃代码。...由此可以预测,Rust 工具将会更加深度地融入前端生态,说不定会掀起新一轮前端基础建设浪潮,让我们拭目以待。...限制远程代码执行 Manifest V3 禁止扩展执行远程代码,所有的代码都必须包含在扩展包中。这可以防止扩展用来执行恶意代码。...由于设计稿和代码使用是同一套设计系统,设计稿中组件和最终代码中组件是一一映射关系,因此无需进行标注就可以实现组件精准识别。...因此我们可以得知,ArkTs 是 TypeScript 超集,在保留 TypeScript 基本语法风格基础上,提供更加强大功能。

2.4K82

超 1.7 万个 JavaScript 文件,Etsy 大型代码库如何完成向 TypeScript 迁移?

尽管这个升级意味着我们对代码库未来验证已经完成,并且可以编写出更加习惯化、更可扩展 JavaScript,但是我们知道还有改进空间。 Etsy 已经有十六年历史了。...很多文件需要用类型进行注释,这样 TypeScript可以完全理解它们。还有许多 JavaScript 文件可以转换成有效 TypeScript,只需将其扩展名从 .js 改为 .ts 即可。...确定 Etsy 正确方法意味着要回答一些关于迁移问题: 我们希望 TypeScript 味道有多严格? 我们希望迁移多少代码库? 我们希望编写类型有多具体?...我们采用什么? 以下是我们采用策略: 使 TypeScript 尽可能地严格,并逐个文件地移植代码库。 添加真正优秀类型和真正优秀支持文档,包括产品开发者常用所有实用程序、组件和工具。...TypeScript 本身无法禁用这些语言特性,但是 Lint 使我们能够识别它们并防止它们被部署。

63110

重构自动化

通过检查对应语言配置 SCM(如 Git)commit message 是否规范?通过提交记录来学习模式,而后可以通过类似于 commitizen 工具实现自动化。...坏味道识别 如果代码有味道的话,那么你所能闻到一定是坏那种,因为『久居兰室不闻其香』,对于稍有经验开发人员来说,寻找代码味道,是一件简单事情——从代码里挑刺嘛。...针对于每一项坏味道,编写识别代码。 组织特定味道识别。 编写坏味道建议改进和实施代码。 而对于这些坏味道来说,有的易于识别,有的没必要识别: ? 对应可以按分组来判断各自需要。...开始之前,让我们先统一一下语言:『什么是重构』 重构(refactoring)是指在不改变外在行为前提下,对代码做出修改,以改进程序内部结构。 所以,只要改变了现有的行为,都不能称之为重构。...基于此,我们可以拥有一套完整端到端重构工具集。 结论 有没有这样工具呢? 有。

99230

中型前端应用,就别折腾什么微前端、DDD、六边形架构了

Hi,我是 ssh,今天带来一篇关于中型应用中需要什么、不需要什么思考,避免过度设计,把精力放在最重要技术功能中,才是你成功带领项目的关键:Stop Over-Engineering your Medium...TypeScript 是 JavaScript 一个超集,添加了类型注解、接口等特性,可以编写可维护和可扩展代码。它可以我们在开发过程尽早捕获类型错误,随着你应用增长,可以更容易重构代码。...一个良好 CI/CD 工具可以提高开发过程效率,并确保你应用始终准备好部署。...尽管领域驱动设计在具有复杂业务逻辑和多个团队协作大规模应用中非常有用,但对于中型应用来说可能就是过度设计了。 对于中型应用,更简单架构和关注整洁、模块化代码通常就足够确保可维护性和可扩展性了。...对于具有多个产品和团队大型组织,使用设计系统可以带来巨大收益,但对于中型应用来说是没必要

19920
领券