代码高亮使用什么样的颜色组合,最适合阅读代码?

https://tonsky.me/blog/syntax-highlighting/
意外富翁 · 3个月前 · 技术 · 43 · 0

程序员一般都使用代码高亮,就是代码有不同的颜色,方便阅读。

代码高亮,本该是辅助我们快速阅读和定位代码的得力助手,但现实中,很多开发者却被“圣诞彩灯”般的炫目光效搞得眼花缭乱。如何才能真正发挥代码高亮的工具价值,让它成为你高效编程的伙伴,而不是视觉的负担。

“圣诞彩灯”式的灾难:当一切都被高亮

你是否也曾遇到过这样的代码界面,变量、关键字、常量、标点符号、函数、类、注释……几乎所有元素都被赋予了鲜艳的色彩?当一切都闪闪发光时,反而失去了焦点,眼睛疲劳不说,想找到关键信息更是难上加难。

想象一下,在“圣诞彩灯”般的代码中寻找函数定义,是不是比在简洁的界面里要费力得多?这就是问题的核心:如果一切都被高亮,那么就没有什么真正突出。 就像给所有任务都标上“最高优先级”,最终结果是所有任务的优先级都变得模糊不清。

颜色记忆的极限:少即是多

代码高亮主要服务于两个目的:

  1. 快速识别: 通过颜色一眼看出元素的类型。
  2. 快速查找: 知道要找什么(什么颜色)。

然而,大多数人实际上并没有频繁地进行这种“颜色查找”。文章作者举了个例子,将 return 拼写错误,颜色从红色变成了紫色,但作者本人却没能第一时间发现。

所以,一个真正实用的颜色主题,应该拥有极少量的颜色,以至于你能够一口气记住它们。作者的“Alabaster”主题就只用了四种颜色:

  • 绿色:表示字符串
  • 紫色:表示常量
  • 黄色:表示注释
  • 浅蓝色:表示顶层定义

这样一来,如果你在找字符串,就知道它一定是绿色的;看到黄色,就知道是注释。这种极简主义让你真正能用颜色来辅助查找。如果有人偷偷给你换了颜色,你甚至可能都注意不到,那这个主题还有什么功能可言呢?

到底该高亮什么?

记住,高亮是为了让不常出现的元素脱颖而出。

  • 应该高亮: 常量(数字、字符串)、顶层定义(帮助快速理解结构)、标点符号(帮助区分名称和语法)。
  • 不该高亮: 变量、函数调用(它们在代码中随处可见,占比太高)、语言关键字(如 class, function, if, else)。你查找 if 时,关注的往往是它后面的条件,而不是 if 这个关键字本身。

注释的“新身份”:别再灰溜溜了!

传统上,注释常被用灰色表示,这源于过去按行数计费的时代,人们希望代码中的“废话”不被注意。但好的注释是代码的补充,解释了难以直接表达的内容,它们是重要的!

所以,大胆地用鲜艳的颜色高亮注释吧!就像作者展示的那样,用明亮的黄色吸引注意力。如果代码中区分了“解释性注释”和“被禁用的代码”,那就更好了,可以分别用不同的颜色来区分。

明亮还是黑暗?光影的秘密

数据显示,70% 的开发者偏爱深色主题。这背后可能隐藏着科学的原因。深色背景下,颜色往往显得不那么鲜艳,甚至有些浑浊。这是因为在亮度较低的光谱中,可供选择的颜色种类和区分度都大大降低。

而浅色主题,如果颜色选择不当,很容易显得杂乱,难以辨认。作者提出一个巧妙的解决方案:利用背景色来增强对比度。通过在浅色背景上使用带有背景色的文本,可以在保证高对比度的同时,让颜色更加清晰、鲜艳。这是一种在 UI 设计中常用的技巧,但在代码编辑器中却鲜有应用。如果你的编辑器支持,不妨试试这个方法,它可能会为你打开浅色主题的新世界。

粗体和斜体:别再“画蛇添足”

和过多的颜色一样,滥用粗体和斜体也是一种“画蛇添足”。它们只是另一种高亮方式,而我们不需要太多。

数字至上的迷思:科学不等于实用

有些颜色主题过于追求“科学性”,比如所有颜色亮度一致,色相均匀分布。这听起来很棒,但实际效果却不尽如人意。眼睛对亮度的差异比对颜色的差异更敏感。 如果所有颜色看起来都差不多,那么它们就很难区分开来。

一起设计一个更棒的颜色主题吧!

让我们一步步应用这些原则,来改造一个“圣诞彩灯”式的颜色主题:

  1. 移除关键字高亮,恢复基础文本颜色。
  2. 移除变量和函数调用的高亮。 记住,它们在代码中占比太高了。
  3. 适当调暗标点符号。 这能让名称更加突出,让你快速把握代码的整体思路。
  4. 高亮注释。 用鲜艳的颜色吸引注意力。
  5. 统一数字和字符串的颜色。
  6. 调整颜色,尊重嵌套逻辑。 例如,函数定义比变量定义更“亮眼”。

经过这些调整,你会发现代码变得更加清晰,更容易阅读,也更容易找到所需信息。

告别“传统”,拥抱高效

作者分享了他坚持这些原则八年来的经验,并推出了名为“Alabaster”的主题。他相信,之所以我们看到更多“传统”的颜色主题,只是因为大家没有真正去思考过这个问题。

希望这篇文章能唤醒你对代码高亮的思考,让你更有意识地去选择和使用颜色,从而改变我们构建和使用颜色主题的默认方式。告别那些令人眼花缭乱的“圣诞彩灯”,拥抱真正能提升你编程效率的工具吧!

已复制到剪贴板

评论 0 条

暂无评论,来种下第一颗种子。