我在SO上看过几个字体主题,似乎大多数人在编程任务中使用等宽字体。我使用Verdana进行编程已经有两年了,我真的很喜欢增强的可读性,并且不会丢失任何与等宽线有关的内容。
为什么使用等宽字体?
我在SO上看过几个字体主题,似乎大多数人在编程任务中使用等宽字体。我使用Verdana进行编程已经有两年了,我真的很喜欢增强的可读性,并且不会丢失任何与等宽线有关的内容。
为什么使用等宽字体?
Answers:
在等宽字体中:
Il 0O
我以前从未考虑过使用比例字体进行编码。因此,出于科学的利益,我只好切换了编辑器,开始尝试。
修复几个简单的票证后,有一些观察结果:
!
的运营商if (!foo)
。(如果(!foo),请参阅!){}[]()
vs {} []())$@%
vs $ @%)'"!;:,.
vs'“!; :: ..)0Oo iIl
vs 0OoIIl)这里有一些积极点,虽然。诚然,我只使用了一段时间,但是肯定有一些方面在使用比例字体时效果更好:
明天我将再次更新此答案(假设我可以像这样整天完成任务!)
我喜欢排队相关的条件,以使它们更加明显。例如:
if ((var1 == FOO) && ((var2 == BAR) ||
(var2 == FOOBAR)))
可变宽度字体使此操作更加困难。
我在这里一直看到的一件事是“排队代码”和缩进的讨论。我想指出以下几点:
因此,将所有这些放在一起,如果您在同一位置开始每行,并且一致的间距是相同的宽度,并且标识符不会自发地更改每行的宽度,那么您的代码实际上将对齐!...直到有些不同。
例如:
identifier.Method().Property.ToString();
identifier.Method().OtherGuy.ToString(); //how lined up and pretty!
identifier.Method().Sumthing.YouGetThePoint;
我要承认的一点是,非字母数字字符通常不是很宽。这些包括)(] [} {,: |“;',`!和。然而,可以在字体编辑器中解决此问题……只需将它们变宽即可,这不是非等宽字体固有的问题;只是没有对它的需求不大,所以还没有完成。
总而言之,个人喜好很好,但我认为没有什么实际理由更喜欢等宽而不是非等宽。你喜欢它的外观吗?当然,做等宽的。您想在屏幕上放更多东西吗?去非单声道。但是人们对待异端等异端的方式有些过分了。
我对这个线程感到好奇,因为实际上可以通过一些调整轻松地反驳等宽字体的许多参数。因此,我将IDE切换为Calibri(因为它具有漂亮的圆形表面,并且针对UI屏幕上的可读性进行了优化-完美)。现在,我显然必须使用制表符来代替缩进的空格(忽略所有问题),显然4个空格的宽度是不够的,因此我切换到了10个。
现在看起来还不错。但是,我可以发现一些明显的问题。在测试了一段时间之后,可能还会出现更多的内容。
符号不能很好地对齐。例如,请考虑以下C#代码:
var expr = x => x + 1;
箭头 (=>
)看起来像是任何等宽字体的单位。它看起来像两个相邻字体的其他字体。像>>
etc这样的运算符也是如此。
上下文相关的缩进已被完全破坏:在某些情况下,仅缩进固定数量的标签是不够的。采取可通过以下方式缩进的LINQ表达式:
var r = from c in "This, apparently, is a test!"
where !char.IsPunctuation(c)
select char.ToUpper(c);
您根本无法使用成比例的字体。
总而言之,字符太狭窄。同样,额外的字母间距可能会有所帮助,在标点符号的情况下绝对有必要。但是,我感觉到所有这些使比例字体更具可读性的调整只会模仿自然的等宽字体。到目前为止,对于所有要点来说都是正确的。
我使用的是Comic Sans MS,它的小字号看起来非常合理(它只是在标题尺寸上看起来像“ jokey”)。视觉上很容易,但仍要保持文本足够小,以便在VS停靠的面板中的几个打开的情况下,在文本窗口中可见合理数量的代码。
您可以显示“解决方案资源管理器”面板,并且仍然可以读取100列文本,而无需水平滚动。此外,我可以使DXCore Documentor面板(显示格式化的XMLDOC)打开得足够宽,以供阅读,同时仍然能够看到足够的文本来为XMLdocs编写文档。
只需要花费几个小时的时间来弄清楚为什么搜索找不到东西,因为您的文字中有2个空格而不是1个空格,因此您应该使用Monospace字体。当设计人员未使用等宽字体时,尝试修复Lotus Notes代理时,我曾发生过这种情况。直到我将代码粘贴到CodeWright中以打印出来,才发现问题出在哪里。
等宽字体使排队代码更加容易。
与团队合作时尤其如此。团队中的每个人都可以使用不同的字体,只要它们都是等距的,所有内容都将对齐。同样,如果一个人使用许多不同的开发工具,则如果它们都是等距的,那么所有内容都会对齐。如果它们不是全部等宽的,则必须确保它们都使用相同的字体,如果要在两个平台上进行开发,则可能会很困难。
实际上,某些开发工具仅支持等宽字体。
另一个原因是等宽字体倾向于具有更多不同的字符。比较lIiO0与lIiO0
,您会明白我的意思。它们还使计数空格变得更加容易。
我个人发现等距字体更容易在代码编辑器中阅读。当然,我几乎是盲目的。这可能会有所作为。我目前在15点运行consolas字体,背景为深色且带有高对比度字母。
一旦深度超过一个级别,使用空格进行缩进将是一个问题。
我认为,就像制表符的问题一样,复杂的因素是为了对齐目的而缩进某些东西,而其他人则有不同的偏好。事情变得错位。