内容丰富的命题作文 - 《Visual Studio Code 权威指南》书评

版权声明:所有博客文章除特殊声明外均为原创,允许转载,但要求注明出处。

Visual Studio Code 是微软推出的、主要面向程序员的新一代编辑器,在某些轻量级场景下已经可以替代专业的 IDE 产品(尽管从本质上说它仍然是编辑器)。其实它出现也已经有好几年了,但一直以来除了官方文档之外,缺乏其他系统性的学习资料。当然也不是完全没有,比如:

现在,由微软中国的工程师韩骏编写的《Visual Studio Code 权威指南》出版了,也算是填补了该主题在中文领域的一项空白。

Visual Studio Code 权威指南

如果读者朋友经常阅读我的博客文章,应该会知道我本人对 VSCode 也比较关注,之前也写过若干关于它的文章。在该书出版后,我从网上买了一本,并用几天的空闲时间快速浏览了其中内容。

内容丰富,资料详实

首先值得赞赏的是:作为知名扩展 Code Runner 的开发者,韩先生确实在这个领域有丰富的经验,因此全书范围覆盖到了 VSCode 的各个方面和使用场景,可以说是足够全面的。

在内容组织上,该书主要包括以下几个部分:

  • 背景知识和体系结构
  • 安装配置
  • 快速入门
  • 高级功能
  • 扩展管理
  • 面向各种语言的使用(包含 PythonJavaScript/TypeScriptJavaC#C++Golang 等)
  • 前端开发、云计算、物联网等领域应用
  • 远程开发
  • 扩展开发

以上内容几乎涵盖了绝大部分普通开发者能够涉及到的所有应用领域,当得起“权威”这个名字。

与此同时,我在快速浏览过程中,基本上没有发现该书在该领域的专业知识或者引用材料方面有任何问题。虽然挂一漏万在所难免,不过我可以向大家保证:该书的专业性和可信度是合格的,也是值得信赖的。

OK,以上为本书说了不少好话。不过接下来,我要对书中部分内容提出批评和自己的看法。

贪大求全,博而不精

本书存在“大全”类图书的通病————务求全面,但对每个主题的涉猎深度都比较有限。它比较适合初学者用来参考和入门,但一旦碰到某些深度使用场景或疑难问题,你就很难再从书中找到答案,甚至不知该从何找起。

大全类图书存在的第二个问题是,它的内容主要是“讲知识”,而较少涉及怎么结合项目具体实践,同时篇幅很长、知识点太多,读者在阅读时很难感受到它对自己的困难有什么立竿见影的帮助,因此在心理上容易感到疲劳,收获比较有限。

当然,公平地说,这也不能算“缺点”而是“特点”,因为这是同类图书都难以避免的问题。我想说的是,大家在阅读此类图书时对其特点应该有所认识,可以买一本放在手边,闲暇时翻翻,可以增加自己的理论知识储备;但如果有昏昏欲睡的感觉,就应该及时停下来,千万不要勉强。过一段时间再回头翻翻,说不定会豁然开朗。

此外,开发者之所以要寻求外部资料,往往是在使用 VSCode 过程中出现了疑难问题。遗憾地说,该书对于解决实际问题恐怕没有很多人预想中那么大的帮助。比如说,书中介绍了针对各种语言如何进行开发,但如果过程中出现了意料之外的错误呢?该书并没有告诉你如何去解决。

对于具体问题,更好的解决办法仍然是到各大论坛或社区去提问。有英文基础的朋友最好是到官方网站、GithubStackOverflow,这些地方能够得到第一手的资料。

英文术语的翻译

VSCode 中,Extension(扩展)是一个非常重要的概念。令人诧异的是,书中把它翻译成“插件”。如果是普通作者,那倒也罢了,但韩先生被外界普遍视为微软中国 VSCode 的代言人和布道者,且官方中文语言包对该词的翻译也是“扩展”,出现这种不一致的口径,我个人认为是不太应该的。

一点题外话:VSCode 这个产品对于部分术语的使用,尤其是 extensioncontrib,可以看到明显带有 Eclipse 的影子。当然,如果你熟悉 VSCode 诞生的背景,这不是什么奇怪的事情。而微软方面对于扩展机制的用语比较随意,在历史上曾经出现过 AddInPluginPackageExtension 等多种不同的叫法,这可能是今天一些混乱的来源。不管怎么说,我自己的文章和其他文字材料会坚持使用“扩展”这个叫法,拒绝“插件”,以免产生不必要的混乱和困惑。

内容倾向

虽然我赞扬过本书内容全面完整,但在取舍的尺度上,不可避免地参杂着作者本身的背景和偏好在内。典型例子是,书中云平台的部分,对于 Azure 的介绍洋洋洒洒数十页,而对于 AWSGCP 等则一两页就带过了。早就知道微软工程师出的书出现这种情况势所必然,但这倾向也未免太过明显了吧。

对于很大数量的 Java 程序员而言,Java 开发几乎就相当于 Spring 开发。我并不赞同这种认知,但应该承认 Spring 在该领域占有相当重要的分量。而本书的 Java 部分用了十几页来讲述基本的应用,到 Spring 部分却只有略多于一页的篇幅,可以说还没展开就结束了。对于想用 VSCode 开发 Java 应用的读者来说,该书介绍的深度恐怕是不够的。

缺乏调试相关的深度知识

从我本人对 VSCode 的使用经验、以及社区的反馈来看,在该产品应用于实际项目开发过程中一个最大、也是最容易出错的难点是如何编写和管理调试相关的文件(主要是 tasks.jsonlaunch.json)。这些文件本身的内容就非常灵活且复杂,如果出错的话,用户往往是一头雾水。我很期待本书对此问题有一个系统性的讲解,遗憾的是并没有。调试相关的内容分布在各个语言的章节中,对于文件内容也只是字段的简单罗列,并没有理论性、系统性的总结。

扩展开发内容有限

VSCode 一个最有趣的地方是可以自行开发扩展,并且门槛并不高,所以吸引了大量社区用户去创建自己的扩展。

在 《权威指南》一书的最后部分,用了一章去介绍如何参与社区活动、一章去讲解实际开发过程。比较遗憾的是,除了入门示例之外,该章大部分内容都是罗列文档和参考资料,代码较少也缺乏系统性,针对各种用例场景的解决办法基本上没有涉及。

当然,作为多款扩展的作者,相信韩先生在知识储备方面是没有问题的。不揣冒昧地猜想,在编写本书时可能面临着两难的局面:如果完全不涉及扩展开发,那么这本冠名为“权威指南”的书将很难说是名副其实;但要全面覆盖开发相关内容,一是时间太紧,二是篇幅会显得太长。依我看,韩先生如果有长远规划的话,不妨考虑该书分为上下两篇。

总之,如果期望用本书来帮助读者去开发实际扩展,恐怕是会让人失望的。

如何学习 VSCode

说了这么多问题,那么读者可能想知道一个结论:我可以用这本书来学习 VSCode 吗?如果不行的话,应该怎么学呢?

在前面我也说过,《VSCode 权威指南》这本书最好当作参考书来用————也就是说,先大略浏览一遍,知道里面有哪些内容,感兴趣的部分可以仔细阅读。至于其他和你目前的工作关系不大的部分,可以跳过去,也不必强迫自己从头读到尾(那样费力甚大而收效甚微)。等你以后经验更丰富、眼界更开阔的时候再回来读一下,或许就能理解以前不太清楚的部分。

VSCode 有着几乎可以说是不计其数的快捷键,而《权威指南》很大一部分篇幅就是介绍这些快捷键的。但我认为,通过读书来记忆它们,既没有效率也没有意义。有的朋友推荐把快捷键的 PDF 版本打印出来参考,对此方法我也表示怀疑。我更推荐这样的方法:熟练掌握命令面板(Comnmand Palette)的用法。因为 VSCode 中几乎所有操作都有对应的命令,而只要是命令,就可以从面板中调出来。你可以在使用它们的同时顺便扫一眼它对应的按键是什么,时间长了自然就会形成记忆。

如果你有一个具体的应用场景,那么去网上查找文章、教程或问答,可能更为合适,因为它们目标更明确、更具有针对性,通常也更能解决你的实际问题。

如果在使用过程中发现某个功能似乎不起作用,你首先应该做的是去输出(Output)面板去找找有没有错误日志,往往能对了解问题为什么出现得到一些帮助,如下图所示。去官方提交问题的时候也应该附带上你能找到的错误信息,否则往往会沦为茫无头绪的瞎猜。很遗憾的是,在网上提问题的朋友几乎 100% 都不知道这个原则。

Output 日志输出

插图问题

最后还要提到一个附带问题。这个问题严格来说不能怪作者,但负责出版本书的相关人员似乎都没有注意到:VSCode 布局紧凑、字体较小,且大量使用深色背景,在屏幕上显示效果很好,但作为截屏打印出来就惨不忍睹了,有相当一部分根本看不清内容,只能看个“示意”了,勉强能看到的也堪称是在考验视力。说实话,对于类似题材的书籍,我建议出版社以后还是以电子版为主,在 ipad 等高清电子屏幕上看起来效果要比纸上好得多。