Decorative image frame

阿杰

爱生活|爱编程|爱书法

再谈单元测试

曾写过多篇测试相关的文章,都源于每次测试给我带来的触动,这次也不例外,最近在重构复杂逻辑时,再次感谢它为我保驾护航,同时也发现了历史测试中存在的一些问题。

测试的意义

这是一个认知问题,如果不清楚为何要写测试,那么最终产生的测试大概率是腐烂、或无意义的。

  1. 保证代码的正确性,提升代码质量是它最高的使命。
  2. 保证代码的安全性/稳定性,当对某段代码改动后,测试会告诉哪些代码受到了潜在的问题。
  3. 可以指导写代码的思路,在测试驱动开发(TDD)体现尤为明显。
  4. 更能透彻的理解代码,很多情况下,写代码时常常会陷入自己的世界,从测试相当于站在旁观者的角度审视代码,从而提升可读性和扩展性。

阅读全文...

编辑器系列-剪贴板

剪贴板概述

在编辑器中复制/剪切的方式有两种:

  • 系统剪贴板:快捷键触发 Ctrl/⌘ + C/X/V
  • 浏览器剪贴板:工具栏或拦截快捷键触发

两种方式的区别:数据储存的位置不同,前者的数据是储存在系统的剪贴板中,后者存在浏览器中。

两者都可以基本满足复制/剪切,但是往往在线编辑器常用浏览器剪贴板,为什么呢?

阅读全文...

编辑器系列—什么是插件

插件(Plugin)是指一种可以增强或扩展已有软件功能的组件或模块。它们通常是以独立的方式编写,可以被动态地添加到主应用程序中,从而提供额外的功能和特性。 —— ChatGPT

个人理解:插件是一个相对的名词,它必须有一个主体容器/应用,其他独立的组件以插入的形式扩展主体容器/应用。

在 Slate 中,插件是一等公民,连编辑器都是以插件的形式创建的,其中编辑器对象扮演着主体容器/应用的角色,提供核心功能,每个插件可以基于 Editor 提供的核心能力去拦截改写或扩展自己的功能/逻辑。

阅读全文...