为什么在IDE中使用单空间字体?
我在SO上看到了几个字体主题,似乎大多数人都使用单空间字体进行编程任务。我已经使用Verdana编程好几年了,我真的很喜欢增强的可读性,没有遗漏任何与monospace相关的内容 为什么使用单空间字体?在单空间字体中:为什么在IDE中使用单空间字体?,ide,fonts,text-editor,Ide,Fonts,Text Editor,我在SO上看到了几个字体主题,似乎大多数人都使用单空间字体进行编程任务。我已经使用Verdana编程好几年了,我真的很喜欢增强的可读性,没有遗漏任何与monospace相关的内容 为什么使用单空间字体?在单空间字体中: 等长字符串文字看起来相等 更容易看到细标点符号,如:(){} 相似的字符看起来更不一样:Il 0O与Il 0O 您知道一行是否会在一个X字符宽的窗口上换行。这意味着您的团队可以标准化100个字符的行,并且一行始终看起来像一行 一旦你的缩进深度超过一个级别,使用空格将是一个问题。
- 等长字符串文字看起来相等李>
- 更容易看到细标点符号,如:(){}
- 相似的字符看起来更不一样:Il 0O与
Il 0O
- 您知道一行是否会在一个X字符宽的窗口上换行。这意味着您的团队可以标准化100个字符的行,并且一行始终看起来像一行
if ((var1 == FOO) && ((var2 == BAR) ||
(var2 == FOOBAR)))
identifier.Method().Property.ToString();
identifier.Method().OtherGuy.ToString(); //how lined up and pretty!
identifier.Method().Sumthing.YouGetThePoint;
可变宽度字体使这变得更加困难。我怀疑单间距字体是程序员从基于文本的DOS时代遗留下来的首选字体
另一方面,我自己也尝试过Verdana和其他一些推荐的比例字体,但我无法应对这种变化。我的眼睛训练得太好了,不适合单一空间。大量使用符号的语言,如:C/C++、C#、Perl等,对我来说太不一样了。符号的位置使代码看起来完全不同。我认为,就像制表符的问题一样,复杂的因素是为了对齐而缩进某些内容,而其他人有不同的首选项。事情会变得不协调。由于代码的性质而不是常规语言,最好将其正确排列。此外,在代码编辑中,有时需要块选择、块复制和块粘贴。在VisualStudio中,可以在进行鼠标选择时使用ALT键进行块选择。在不同的编辑器中可能会有所不同,但我始终发现,在某些情况下,编辑器中的选项非常重要,除非您使用单间距字体,否则效果不会很好 如果您在团队中工作,那么单间距字体可以确保代码对每个人都清晰且布局正确,无论他们喜欢使用哪种单间距字体
使用可变宽度字体时,您的代码可能看起来很清晰,但如果使用单间距字体用户打开它,代码看起来就不太可能相同。我使用的是Comic Sans MS,它看起来非常合理,因为字体的大小很小(它只在标题大小上看起来像“笑话”)。它看起来很简单,但仍然保持文本足够小,以便在文本窗口中可以看到合理数量的代码,同时打开几个VS的停靠面板
您可以打开“解决方案资源管理器”面板,但仍有100列文本可读,无需水平滚动。另外,我可以将DXCore Documentor面板(显示格式化的XMLDOCs)打开到足以阅读的程度,同时仍然能够看到足够的文本来记录XMLDOCs。主要用于对齐目的(例如,当函数参数声明跨越多行时,您希望将它们对齐,或对齐注释等).我以前从未考虑过按比例字体编码。因此,为了科学的利益,我把我的编辑换了,让它试一试 以下是在修复了两张简易票后的一些观察结果:
- 代码似乎非常密集。我的大部分代码大约有80列,很少超过100列。一个比例字体将其压缩到编辑器左侧的一个小条带上。如果您的屏幕空间很短,可能会很有用,但它似乎过于紧凑
- 代码的“纹理”丢失。很难说我在看什么样的结构——它只是一大块文本,几乎需要逐字阅读
- 非常容易错过
中的code>运算符。(如果(!foo),请参阅!)如果(!foo)
- 标点符号的定义非常糟糕。很多是很难区分的(
vs{}[])){}[])(
- 某些标点符号比其他标点符号大得多,从而推断出没有标点符号的强调(
vs$@%)$@%
- 有些字符很窄,很难识别(
vs'”;:,)'“!;:,。
- 有些数字和字母非常相似(
vs 0Oo iIl)0Oo iIl
- 我非常依赖于语法突出显示,没有它,几乎不可能完成确认引号是否平衡等操作
- 对齐(除了简单的缩进)完全中断。您可以通过添加额外的空格来增加它的长度,但由于字体的比例性质,行可能不会完全对齐-代码看起来更混乱
- 正则表达式是。。有趣李>
- “单词”更容易阅读——拼写错误(如拼写变量不正确)会向你袭来
- 使用更长、更具描述性的变量名会让我感觉更好(可能是因为它们的扫描效果更好,可能是因为文本的水平大小被压缩了)
- 这样的代码看起来更容易阅读。我的大脑更容易“标记”每个单词并理解其含义。虽然因为标点符号更难阅读,但仍然很难理解,但如果有一点时间来适应,也许会有所改变
var r = from c in "This, apparently, is a test!"
where !char.IsPunctuation(c)
select char.ToUpper(c);
identifier.Method().Property.ToString();
identifier.Method().OtherGuy.ToString(); //how lined up and pretty!
identifier.Method().Sumthing.YouGetThePoint;