5.6visual studio code的接口设计

    科技2025-07-18  9

    从入职到架构师的成长之路,“看到——快速入职——审核与团队——接口抽象——可复用架构——质量和团队”,其中接口抽象处于承上启下的关键位置,之前,团队已经拉起来了,跨过这一步,我们就需要思考如何拉着团队更好地做产品了。

    通过抽象提炼的是接口,更是切口,通过抽象接口,可以对一个产品的工作任务进行有机切割。因此,切口是否合理,会直接决定着团队成员分工是否合理,决定着团队的工作效率,甚至决定着产品成败。

    很多团队,最常见的分工模式就是按产品切割分工,这几个人负责这款产品,那几个人负责那款产品。这就是一种典型的不太友好的切割策略,一个团队中负责的多款产品会复用很多模块,而这种分工策略人为的制造了代码分裂,后期会带来一系列问题。

    好的切割,会尽量让单一工作任务落在更少人的工作边界内,最典型的如规约模块,一般会横跨工业嵌入式产品、配置软件和维护软件等多个软件实体。如按照产品实体分工切割,一点点的规约变动就需要惊扰一大帮人,工作量本不大,但多个团队之间的交流扯皮会导致工作量急剧上升。一种更好的切割策略就是将规约模块相关任务切割给规约小组,不仅包含工业嵌入式产品中的规约模块,也包括外围软件中的规约模块,此时就能减少很多不必要的纠纷。当然,这样切割的前提是要求不管工业嵌入式产品,还是外围软件,都需要提供规约模块执行框架。这也是为何我们经常强调接口抽象是跨入架构设计的敲门砖。

    ◇◇◇

    真实世界是能看到别人切割得很简单很优雅,但面对自己的产品时无从下手。这背后的主要原因是缺乏积累和实践,最佳积累策略就是平时要习惯去积累各种优秀软件的接口抽象案例。微软的visual studio code是目前非常流行的一款代码编辑器,是程序员的好朋友,尤其在互联网程序开发领域,本节我们一起来分析分析visual studio code软件有哪些值得我们学习的接口抽象。

    我一开始使用visual studio code时,经常有一种错觉,这是一个代码编辑器吗?相信很多用过的朋友都会有类似的错觉,借助大量的插件模块,我们甚至可以将visual studio code改造成为适合自己的开发环境,为何visual studio code会有如此魅力呢?

    visual studio code首先是一款代码编辑器,因此必然要包含我们程序员喜欢的各种功能,如:代码智能提示、代码验证报错、语法高亮显示、代码片段收集整理、代码格式化、快速跳转、快捷键重映射、批处理脚本等功能。然而,很遗憾,上述这些功能经常是和特定语言绑定的。如最常用的代码智能提示和快速跳转,内部需要编辑器去解析大量的程序文件,并生成符号表和抽象语法树,而且这些操作还会占用大量的cpu和ram资源。

    正是因为这些原因,以往各类高级代码编辑功能都是内嵌于特定编辑器内部的,而且和特定语言死死绑定在一起的。在这种背景下,想在编辑器中扩展一门新语言成为几乎不可能完成的任务。

    visual studio code定位于通用的代码编辑器,为了解决上述问题,提出了一个新的接口抽象层:语言服务器协议(Language Server Protocol,LSP),由LSP提供了统一的诸如代码智能提示、跳转、格式化等功能接口,并通过JSON-RPC消息,可以方便编辑器嵌入各种编程语言。

    顺便补充一句,最初LSP协议仅仅只是为visual studio code开发用于支持各种语言的,后来,微软和其他几个公司合作,一起完善了LSP规约,并使其上升到标准的高度,目前包括Eclipse、Atom、Sublime Text、Qt Creator等主流编辑器都已经支持LSP标准,整个生态已蔚为壮观,后来者只能选择加入而无法对抗了。我们经常感叹一流的工作做标准,二流的公司做产品,LSP标准的诞生过程或许对大家有触动作用。

    类同代码编辑,我们程序员调试代码时的常见操作包括:设置断点、查看变量、查看堆栈、查看内存、调试控制台等,如果依据这些需求去构建抽象层,visual studio code就可以支持各种语言调试了,这就是调试服务器协议(Debug Adapter Protocol,DAP)。你品到了一丝异曲同工之妙了吗?

    类同LSP和DSP,visual studio code还抽象了很多其他接口,如:

    代码格式化。快捷键映射。代码片段。颜色主体和图标主体。源代码管理器。多语言版本。云计算,如亚马逊云和阿里云。……

    量变会引起质变,随着诸多抽象接口的提炼,visual studio code开始支持一个统一的接口开发环境,而这就是visual studio code大名鼎鼎的插件系统。而正是因为数以千计的各类丰富插件,visual studio code在短短几年内成长为程序员眼中最受欢迎的代码编辑器。

    插件系统已经属于架构设计范畴了,从抽象接口到插件系统,下一章,让我们一起携手迈入精彩纷呈的架构世界。

    ——————————————

    返回目录

    我是小马儿,一个渴望良知与灵魂的嵌入式软件工程师,欢迎您的陪伴与同行,如感兴趣可加个人微信号nzn_xiaomaer交流,需备注“异维”二字。

    Processed: 0.012, SQL: 8