为什么在IDE中使用等宽字体?

时间:2008-10-20 14:24:04

标签: ide fonts text-editor

我在SO上看过几个字体主题,似乎大多数人都使用等宽字体进行编程任务。我已经使用Verdana进行了几年的编程,我非常喜欢增强的可读性,而不会遗漏任何与航天相关的内容。

为什么使用等宽字体?

15 个答案:

答案 0 :(得分:99)

采用等宽字体:

  • 等长字符串文字看起来相等。
  • 更容易看到薄的标点符号,如:(){}
  • 类似字符看起来更加不同:Il 0O vs Il 0O
  • 您知道一条线是否会在X字符宽的窗口上换行。这意味着您的团队可以标准化100个字符行,并且一行总是看起来像一行

答案 1 :(得分:98)

我以前从未考虑过以比例字体编码。所以为了科学的利益,我只是改变了我的编辑,试一试。

在修好几张简单的门票之后,有几点意见:

  • 代码似乎非常密集。我的大多数代码都是大约80列,很少超过100列。比例字体将其缩小到我编辑器左侧的一个小条带。如果你的屏幕空间很短,也许有用,但它似乎不必要地紧凑。
  • 代码的“纹理”丢失了。很难说我正在看什么样的结构 - 它只是一个大块的文本,需要几乎逐个字符地阅读。
  • 非常很容易错过!中的if (!foo)运算符。 (if(!foo),见!)
  • 标点字符的定义非常严格。许多很难分辨({}[]() vs {} []())
  • 有些标点字符比其他标点字符大得多,推断重点不在意的地方($@% vs $ @%)
  • 有些字符非常狭窄,很难识别('"!;:,. vs'“!;:,.。)
  • 有些数字和字母非常相似(0Oo iIl vs 0Oo iIl)
  • 非常依赖于语法高亮,没有它,几乎不可能做出诸如确认引号平衡之类的事情。
  • 对齐(除了简单的缩进)完全被打破。您可以通过投入额外的空间来对它进行排序,但由于字体的比例性质,这些线条可能不完全对齐 - 代码看起来更混乱
  • 正则表达式很有趣!

有些积极点。不可否认,我只是在使用它一段时间,但肯定有一些方面比例字体效果更好:

  • 'words'更容易阅读 - 拼写错误(例如错误地拼写变量)跳出来。
  • 我觉得使用更长,更具描述性的变量名称会更好(可能因为它们扫描得更好,可能是因为文本的水平大小被压缩了)
  • 这样的读取代码似乎更容易一些。我的大脑更容易“标记”每个单词并理解其含义。虽然因为标点字符更难以阅读,但它仍然很难 - 但也许这会因为一点时间习惯而改变

明天我会再次更新这个答案(假设我可以像这样整整一天!)

答案 2 :(得分:28)

我喜欢排列相关的条件,试图让它们更明显地被分组。例如:

if ((var1 == FOO) && ((var2 == BAR) ||
                      (var2 == FOOBAR)))

可变宽度字体使这更加困难。

答案 3 :(得分:18)

我在这里看到的一件事是讨论“排队代码”和缩进。我想指出以下几点:

  • 八个空格总是两倍于任何字体的四个空格。
  • 两个标签的长度始终是任何字体的一个标签的两倍。
  • 一行上的任何标识符在下一行总是相同的宽度...以任何字体显示!
  • 当然,如果你的队友使用的是等宽的,而你却不是,那看起来会有所不同......但是你应该对某些东西进行标准化 - 无论它是什么 - 如果这是真的那么它看起来会一样适合所有人......以任何字体!对于笑声,你也可以尝试让每个人都使用等宽屏幕并给半数宽屏显示器......看看情况如何。
  • 如果您正在做任何依赖于根据屏幕上这些字符的柱状位置排列代码的内容,而不是您正在使用的标识符的范围,我认为您正在做的是一个黑客。标识符永远不应该以其名称质量为代价限制在一定数量的字符上。除此之外......你还没有在代码中用星号绘制带有星号的ASCII框,是吗?

所以将所有这些绘制在一起,如果你在同一个地方开始每一行,并且一致的间距是相同的宽度,并且标识符不会自发地改变每一行的宽度,那么你的代码实际上会排成一行! ......直到有些不同。

例如:

identifier.Method().Property.ToString();
identifier.Method().OtherGuy.ToString(); //how lined up and pretty!
identifier.Method().Sumthing.YouGetThePoint;
  • identifier.Method()Property.ToString();
  • identifier.Method()OtherGuy.ToString(); //不好了!错位!
  • identifier.Method()Sumthing.YouGetThePoint。 //...但谁在乎? 他们是不同的财产!

我要承认的一点是,非字母数字字符通常不是很宽;这些包括)(] [} {,:|“;',`!和。然而,这可以在字体编辑器中修复......只需将它们扩大。这不是非等距的固有问题;只是没有对它有很多需求,所以还没有完成。

总之,个人偏好很好,但我认为选择等宽航空而不是非等宽航空几乎没有实际理由。你喜欢它的样子吗?当然,做等宽。你想要更多的东西适合你的屏幕?去非单声道。但是,人们对待像异端邪说这样的非等宽的方式有点过分了。

答案 4 :(得分:16)

我对此线程感到好奇,因为等宽字体的许多参数可以通过一些调整轻松地反驳。所以我将我的IDE切换到Calibri(因为它有一个漂亮的圆脸,并针对UI的屏幕上的可读性进行了优化 - 完美)。现在我显然必须使用制表符代替缩进空格(忽略所有问题),4个空格宽度显然不够,所以我切换到10。

现在看起来很不错。但是,我可以发现一些明显的问题。在我测试了这个设置一段时间后,可能会有更多的表面。

  • 如前所述,某些角色(尤其是括号,分号)看起来太薄了。我希望这是连续文本,但不是源代码。我认为这将是最大的问题。
  • 符号不对齐。例如,请考虑以下C#代码:

    var expr = x => x + 1;
    

    箭头(=>)看起来像任何等宽字体的单位。它看起来像其他字体中的两个相邻字符。对>>等运营商也是如此。

  • 空间看起来很小。我大力调整源代码以增强可读性。切换到比例字体时,这一点无效。如果我可以控制空间的宽度,那肯定会有所帮助。
  • 上下文相关缩进完全被破坏:在某些情况下,缩进固定数量的制表符是不够的。采用可能以下列方式缩进的LINQ表达式:

    var r = from c in "This, apparently, is a test!"
            where !char.IsPunctuation(c)
            select char.ToUpper(c);
    

    您无法使用比例字体执行此操作。

总而言之,角色太窄了。再次,额外的字母间距可能会有所帮助,在点击的情况下肯定是必要的。但是,我觉得所有这些使比例字体更具可读性的调整只会自然地模拟等宽字体。对于到目前为止提到的所有要点,这当然是正确的。

答案 5 :(得分:11)

我使用Comic Sans MS,它看起来非常合理,因为它的小点尺寸(它只在头条尺寸上开始看“jokey”)。这很简单,但仍保持文本足够小,以便在文本窗口中显示合理数量的代码,并打开几个VS的停靠面板。

您可以使用解决方案资源管理器面板,并且仍然有100列文本可读而无需水平滚动。转移,我可以让DXCore Documentor面板(显示格式化的XMLDOC)打开得足够宽,可以阅读,同时仍然可以看到足够的文本来记录XMLdocs。

答案 6 :(得分:10)

如果您在团队中工作,那么单行间距字体可以确保代码清晰,并且可以为所有人正确布局,无论他们喜欢使用单倍间距字体。

使用可变宽度字体时,您的代码可能看起来很清楚,但如果单倍间距字体用户打开它,则不太可能看起来相同。

答案 7 :(得分:10)

所有需要花费几个小时的时间来弄清楚为什么搜索没有找到某些内容,因为你在文字中有2个空格而不是1个,以便意识到你应该使用Monospace字体。当设计师没有使用等宽字体时,我尝试修复Lotus Notes代理时遇到过这种情况。直到我将代码粘贴到CodeWright中才能将其打印出来,这显然是问题所在。

答案 8 :(得分:10)

等宽字体使代码排列更容易。

与团队合作时尤其如此;团队中的每个人都可以使用不同的字体,只要它们都是等宽字体,一切都会排成一行。同样,如果一个人使用许多不同的开发工具,如果它们都是等宽的,那么一切都会排成一行。如果它们不是全等宽的,那么你必须确保它们都使用相同的字体,如果你在两个平台上开发,那可能很困难。

事实上,一些开发工具仅支持等宽字体。

另一个原因是等宽字体往往具有更多不同的字符。将lIiO0与lIiO0进行比较,您将看到我的意思。它们还可以更容易地计算空格。

答案 9 :(得分:6)

我怀疑等宽字体是程序员偏爱的基于文本的DOS时代的结转。

另一方面,我,我自己也尝试过Verdana和其他一些推荐的比例字体,但我无法应对这一变化。我的眼睛训练有素,不适合等宽。符号上的语言很重要,例如:C / C ++,C#,Perl等,对我来说看起来太不一样了。符号的放置使代码看起来完全不同。

答案 10 :(得分:6)

根据代码的性质而不是常规语言,使它正确排列更好。此外,在代码编辑中,有时您想要阻止选择,阻止复制和阻止粘贴。在Visual Studio中,您可以在选择鼠标时使用ALT键进行块选择。在不同的编辑器中可能会有所不同,但我总是发现编辑器中的选项在某些情况下非常重要,除非您使用单倍间距字体,否则它将无法正常工作。

答案 11 :(得分:5)

我个人觉得在代码编辑器中更容易阅读单倍间距字体。当然,我几乎失明了。这可能会有所不同。我目前在15点使用高对比度字母的深色背景运行consolas字体。

答案 12 :(得分:2)

如果深度超过一个级别,则使用空格进行缩进将是一个问题。

答案 13 :(得分:2)

主要用于对齐目的(例如,当函数参数声明跨越多行并且您想要对它们进行排列,或排列注释等)。

答案 14 :(得分:1)

我认为,就像制表符的问题一样,复杂的因素是为了对齐而缩进某些东西,而其他人有不同的偏好。事情变得错位。