反对语法高亮的案例
反对语法高亮的案例
您在开发软件时依赖语法突出显示吗?如果是这样,你可能会搬起石头砸自己的脚。在这篇文章中,我将认为语法突出显示虽然在美学上很诱人,但却将焦点从内容转移到形式,并阻止那些查看代码的人试图理解它。
背景
语法突出显示是大多数现代文本编辑器和开发环境的标准功能。其基本思想是夸大各种语法元素之间的视觉差异,使程序员更容易区分关键字、标点符号和变量名。
为什么首先要发明语法高亮?程序员在阅读代码时是否混淆了语法,认为“)”可能是一个变量名,甚至是一个预处理器指令?当然不是。虽然阅读计算机程序通常很困难,但困难来自于程序的复杂性,而不是来自语法。
易读性
也许语法突出显示是为了加快阅读过程而发明的。是的,一定是这样,突出显示的代码一定更容易阅读。毕竟它有颜色!
嗯,不。排版的基本经验法则之一是,在编写一段文字时,应该选择一种字体并坚持使用。同样, 大量 的 色彩可能会吸引读者的注意力,但 它 不可避免地会降低文本的可读性。文本的自然流动被打破,需要更多的脑力才能将各个字母拼凑成单词和语义。在认知上,阅读过程变得稍微不那么自动化,而变得更加有意识;大脑的意识部分留给真正理解文本的空间就更少了。
语义比语法更重要
阅读代码时理解至关重要。与小说或报纸文章不同,您可以浏览一段文字并了解其要点,软件不可避免地充满复杂性和重要细节,您只需要花时间去理解。为此,您需要在语义级别查看代码。
即使代码已经为他们所熟知,大多数开发人员也宁愿遇到(并修复)内存泄漏、安全漏洞和低效算法,而不仅仅是语法错误。语法错误无论如何都会被编译器发现;开发人员不应该浪费时间寻找它们。但是,如果语法突出显示使他们的思想偏向于代码的语法而不是其含义,那么他们最终不会这样做吗?
我并不是说开发人员很愚蠢。但由于我们都会偶尔错过一些错误——每个人都会犯错误——我认为配置我们的工具来帮助我们找到它们,而不是帮助我们错过它们,这将是一个好主意。
学习曲线
也许语法高亮并不适合有经验的程序员。也许它的引入是为了拉平新手的学习曲线,就像一些被误导的钢琴老师在琴键上贴上彩色贴纸一样。我想钢琴老师这样做是为了改善沟通(“现在按黄键!”而不是“现在弹F!”),但他们真的相信孩子们无法学习音符名称吗?最终,他们将不得不这样做,然后他们将不得不忘记颜色。
在用户界面向导中也可以看到同样的现象。例如,图像处理程序中的高级操作很复杂,而这种复杂性会让新用户感到困惑。进入向导对话框,该对话框将跳过或自动执行某些步骤,但会牺牲灵活性。最终,用户只学会了如何使用向导,而不是复杂的功能本身,因此失去了额外的灵活性。所以你根本没有压平学习曲线,而是绕过了它。
如果您学习用彩色编写软件,您可能会发现很难(或者至少是尴尬)在没有颜色的情况下查看相同的代码,甚至使用不同的配色方案。从这个角度来看,语法突出显示是一个教育死胡同。这就像学习如何骑带有辅助轮的自行车。在您忘记沿途学到的一些技巧之前,您将无法骑普通的自行车。
例外情况
在两种情况下,语法高亮实际上可以发挥作用。第一个涉及多行注释。如果您在源代码文件中跳转,也许作为交互式搜索和替换操作的一部分,您可能最终会陷入一大块注释掉的代码中间。您开始将其作为代码阅读,一段时间后您会遇到评论结束标记,并意识到您一直在阅读评论。在这种情况下,用不同的颜色呈现所有注释可以防止错误。
另一方面,这将是一个短视的解决方案。大多数人都认为注释掉代码应该被视为一种高度临时的调试技术,并且注释掉的代码迟早必须被删除或重写。改变它的颜色让它看不见就像把它扫到地毯下一样。
第二种情况主要涉及C语言。不小心写了“=”而不是“==”可能会导致一个特别难以发现的错误,因为你可以坐在那里盯着它看很长时间而实际上没有看到它。这是我发现的唯一一个案例,您将受益于能够专注于代码的语法级别,而无需过多关注语义上下文。通过语法高亮,可以用不同的颜色标记“=”和“==”。耶!实现语法高亮的一个很好的理由!但是——在这一点上你可能不会感到惊讶——我遇到的每个配色方案都使用相同的颜色来突出显示“=”和“==”。
结论
语法突出显示并不能提高可读性。它鼓励您浏览代码而不是理解它。它使您专注于语法错误而不是真正的错误,并且它会妨碍您的学习。可以说,它甚至鼓励您推迟删除注释掉的代码块。它当前的实现无法区分“=”和“==”,这是它有用的唯一情况。
谁会发明如此可怕的功能?我最好的猜测是,它最初是一个很酷的想法,实施起来很有趣。现在它已经成为一个卖点;人们会对不支持它的编辑皱起眉头,尽管没有它他们会过得更好。这是一个很常见的现象;例子包括半透明的控制台窗口和其他养眼的东西。
我建议您采取红色药丸:在不突出显示语法的情况下编辑代码,或者至少采用仅两种颜色的简约方法(一种用于注释,一种用于代码)。请注意,如果没有彩色的正面,您的代码实际上可能看起来相当难看,但至少您会看到它的真实面目。
这次皇帝没有赤身裸体。他穿着一套令人惊叹的彩色小丑服。
发表于 2007 年 8 月 26 日 星期日 11:44

浙公网安备 33010602011771号