zhulink logo
自动夜间模式 日间模式 夜间模式
侧栏
0

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

意外富翁的头像
|
|
|

程序员一般都使用代码高亮,就是代码有不同的颜色,方便阅读。 代码高亮,本该是辅助我们快速阅读和定位代码的得力助手,但现实中,很多开发者却被“圣诞彩灯”般的炫目光效搞得眼花缭乱。如何才能真正发挥代码高亮的工具价值,让它成为你高效编程的伙伴,而不是视觉的负担。 ### “圣诞彩灯”式的灾难:当一切都被高亮 你是否也曾遇到过这样的代码界面,变量、关键字、常量、标点符号、函数、类、注释……几乎所有元素都被赋予了鲜艳的色彩?当一切都闪闪发光时,反而失去了焦点,眼睛疲劳不说,想找到关键信息更是难上加难。 想象一下,在“圣诞彩灯”般的代码中寻找函数定义,是不是比在简洁的界面里要费力得多?这就是问题的核心:**如果一切都被高亮,那么就没有什么真正突出。** 就像给所有任务都标上“最高优先级”,最终结果是所有任务的优先级都变得模糊不清。 ### 颜色记忆的极限:少即是多 代码高亮主要服务于两个目的: 1. **快速识别:** 通过颜色一眼看出元素的类型。 2. **快速查找:** 知道要找什么(什么颜色)。 然而,大多数人实际上并没有频繁地进行这种“颜色查找”。文章作者举了个例子,将 `return` 拼写错误,颜色从红色变成了紫色,但作者本人却没能第一时间发现。 所以,一个真正实用的颜色主题,应该拥有**极少量的颜色**,以至于你能够一口气记住它们。作者的“Alabaster”主题就只用了四种颜色: * 绿色:表示字符串 * 紫色:表示常量 * 黄色:表示注释 * 浅蓝色:表示顶层定义 这样一来,如果你在找字符串,就知道它一定是绿色的;看到黄色,就知道是注释。这种**极简主义**让你真正能用颜色来辅助查找。如果有人偷偷给你换了颜色,你甚至可能都注意不到,那这个主题还有什么功能可言呢? ### 到底该高亮什么? 记住,高亮是为了让**不常出现**的元素脱颖而出。 * **应该高亮:** 常量(数字、字符串)、顶层定义(帮助快速理解结构)、标点符号(帮助区分名称和语法)。 * **不该高亮:** 变量、函数调用(它们在代码中随处可见,占比太高)、语言关键字(如 `class`, `function`, `if`, `else`)。你查找 `if` 时,关注的往往是它后面的条件,而不是 `if` 这个关键字本身。 ### 注释的“新身份”:别再灰溜溜了! 传统上,注释常被用灰色表示,这源于过去按行数计费的时代,人们希望代码中的“废话”不被注意。但好的注释是代码的补充,解释了难以直接表达的内容,它们是**重要**的! 所以,大胆地用鲜艳的颜色高亮注释吧!就像作者展示的那样,用明亮的黄色吸引注意力。如果代码中区分了“解释性注释”和“被禁用的代码”,那就更好了,可以分别用不同的颜色来区分。 ### 明亮还是黑暗?光影的秘密 数据显示,70% 的开发者偏爱深色主题。这背后可能隐藏着科学的原因。深色背景下,颜色往往显得不那么鲜艳,甚至有些浑浊。这是因为在亮度较低的光谱中,可供选择的颜色种类和区分度都大大降低。 而浅色主题,如果颜色选择不当,很容易显得杂乱,难以辨认。作者提出一个巧妙的解决方案:**利用背景色来增强对比度**。通过在浅色背景上使用带有背景色的文本,可以在保证高对比度的同时,让颜色更加清晰、鲜艳。这是一种在 UI 设计中常用的技巧,但在代码编辑器中却鲜有应用。如果你的编辑器支持,不妨试试这个方法,它可能会为你打开浅色主题的新世界。 ### 粗体和斜体:别再“画蛇添足” 和过多的颜色一样,滥用粗体和斜体也是一种“画蛇添足”。它们只是另一种高亮方式,而我们不需要太多。 ### 数字至上的迷思:科学不等于实用 有些颜色主题过于追求“科学性”,比如所有颜色亮度一致,色相均匀分布。这听起来很棒,但实际效果却不尽如人意。**眼睛对亮度的差异比对颜色的差异更敏感。** 如果所有颜色看起来都差不多,那么它们就很难区分开来。 ### 一起设计一个更棒的颜色主题吧! 让我们一步步应用这些原则,来改造一个“圣诞彩灯”式的颜色主题: 1. **移除关键字高亮,恢复基础文本颜色。** 2. **移除变量和函数调用的高亮。** 记住,它们在代码中占比太高了。 3. **适当调暗标点符号。** 这能让名称更加突出,让你快速把握代码的整体思路。 4. **高亮注释。** 用鲜艳的颜色吸引注意力。 5. **统一数字和字符串的颜色。** 6. **调整颜色,尊重嵌套逻辑。** 例如,函数定义比变量定义更“亮眼”。 经过这些调整,你会发现代码变得更加清晰,更容易阅读,也更容易找到所需信息。 ### 告别“传统”,拥抱高效 作者分享了他坚持这些原则八年来的经验,并推出了名为“[Alabaster](https://github.com/tonsky/sublime-scheme-alabaster#variations-1)”的主题。他相信,之所以我们看到更多“传统”的颜色主题,只是因为大家没有真正去思考过这个问题。 希望这篇文章能唤醒你对代码高亮的思考,让你更有意识地去选择和使用颜色,从而改变我们构建和使用颜色主题的默认方式。告别那些令人眼花缭乱的“圣诞彩灯”,拥抱真正能提升你编程效率的工具吧!

  

🫵 来啊,说点有用的废话!