赞
踩
我在SO上看过几个字体主题,似乎大多数人都使用等宽字体进行编程任务.我已经使用Verdana进行了几年的编程,我非常喜欢增强的可读性,而不会遗漏任何与航天相关的东西.
为什么使用等宽字体?
以等宽字体:
等长字符串文字看起来相等.
更容易看到薄的标点符号,如:(){}
类似的角色看起来更加不同:Il 0O vs Il 0O
你知道一行是否会在X字符宽的窗口上换行.这意味着您的团队可以标准化100个字符的行,并且一行总是看起来像一条线
我以前从未考虑过以比例字体编码.所以为了科学的利益,我只是改变了我的编辑,试一试.
在修复了几张简单的门票之后,这里有一些观察:
代码似乎非常密集.我的大多数代码都是大约80列,很少超过100列.比例字体将其缩小到我编辑器左侧的一个小条带.如果你的屏幕空间很短,也许有用,但它看起来不必要紧凑.
代码的"纹理"丢失了.很难说我正在看什么样的结构 - 它只是一个大块的文本,需要几乎逐个字符地阅读.
这是很容易错过!
的运营商if (!foo)
.(如果(!foo),请看!)
标点符号定义非常严格.许多很难分辨({}[]()
vs {} []())
一些标点字符比其他字符串大得多,推断重点在没有意图的地方($@%
vs $ @%)
有些角色非常狭窄,很难识别('"!;:,.
vs'"!;:,..)
一些数字和字母非常相似(0Oo iIl
vs 0Oo iIl)
我非常依赖于语法高亮,没有它,几乎不可能做出确认报价是平衡的等等.
对齐(除了简单的缩进)完全被打破.你可以通过抛出额外的空间来对它进行分类,但由于字体的比例性,这些行可能不会完全对齐 - 代码看起来更麻烦.
正则表达式......有趣!
这里有一些积极点,虽然.不可否认,我只是在使用它一段时间,但肯定有一些方面比例字体更好一点:
'单词'更容易阅读 - 拼写错误(例如错误地拼写变量)跳出来.
我觉得使用更长,更具描述性的变量名称会更好(可能因为它们扫描得更好,可能是因为文本的水平大小被压缩了)
阅读这样的代码似乎更容易一些.我的大脑更容易"标记"每个单词并理解其含义.虽然因为标点字符难以阅读但仍然很难 - 但也许这会因为花一点时间习惯它而改变
我明天会再次更新这个答案(假设我可以像这样整整一天!)
我喜欢排列相关的条件,试图让它们更明显地被分组.例如:
if ((var1 == FOO) && ((var2 == BAR) || (var2 == FOOBAR)))
可变宽度字体使这更加困难.
我在这里看到的一件事是讨论"排队代码"和缩进.我想指出以下几点:
八个空格总是两倍于任何字体的四个空格.
两个选项卡的长度始终是任何字体的一个选项卡的两倍.
一行上的任何标识符在下一行总是相同的宽度...以任何字体!
当然,如果你的队友使用的是等宽的,而你却不是,它看起来会有所不同......但是你应该对某些东西进行标准化 - 无论它是什么 - 如果这是真的那么对每个人来说都是一样的. ..任何字体!对于笑声,你也可以尝试让每个人都使用等宽屏,并给他们一半的宽屏显示器......看看情况如何.
如果您正在做任何依赖于根据屏幕上这些字符的柱状位置排列代码的内容,而不是您正在使用的标识符的范围,我认为您正在做的是一个黑客.标识符永远不应该以其名称质量为代价限制在一定数量的字符上.除此之外......你还没有在代码中用星号绘制带有星号的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.//...但谁在乎?他们是不同的属性!
我要承认的一点是,非字母数字字符通常不是很宽; 这些包括)(] [} {,:|";',`!和.然而,这可以在字体编辑器中修复......只需将它们扩大.这不是非等距的固有问题;只是没有对它的需求很大,所以还没有完成.
总而言之,个人偏好是好的,但我认为没有实际理由喜欢等宽航空而不是非等宽航天.你喜欢它的样子吗?当然,做等宽.你想要更多的东西适合你的屏幕?去非单声道.但是,人们对待像异端邪说这样的非等宽的方式有点过分了.
我对此线程感到好奇,因为对于等宽字体的许多参数可以通过一些调整轻松地反驳.所以我将我的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);
你不能用比例字体来做这件事.
总而言之,角色太狭隘了.再次,额外的字母间距可能会有所帮助,在点击的情况下肯定是必要的.但是,我觉得所有这些使比例字体更具可读性的调整只会自然地模拟等宽字体.对于到目前为止提到的所有要点,这当然是正确的.
我使用Comic Sans MS,它看起来非常合理,因为它的小点尺寸(它只在头条尺寸上开始看"jokey").这很简单,但仍保持文本足够小,以便在文本窗口中显示合理数量的代码,并打开几个VS的停靠面板.
您可以使用解决方案资源管理器面板,并且仍然有100列文本可读而无需水平滚动.转移,我可以让DXCore Documentor面板(显示格式化的XMLDOC)打开得足够宽,可以阅读,同时仍然可以看到足够的文本来记录XMLdocs.
如果您在团队中工作,那么单倍间距字体可确保代码清晰且正确地为每个人布置,无论他们喜欢使用单倍间距字体.
使用可变宽度字体时,您的代码可能看起来很清楚,但如果单倍间距字体用户打开它,则不太可能看起来相同.
所有这一切都需要花费几个小时的时间来弄清楚为什么搜索没有找到某些东西,因为你在文字中有2个空格而不是1个,以便意识到你应该使用Monospace字体.当设计师没有使用等宽字体时,我尝试修复Lotus Notes代理时遇到过这种情况.直到我将代码粘贴到CodeWright中才能将其打印出来,这显然是问题所在.
等宽字体使得排队代码变得更加容易.
与团队合作时尤其如此; 团队中的每个人都可以使用不同的字体,只要它们都是等宽字体,一切都会排成一行.同样,如果一个人使用许多不同的开发工具,如果它们都是等宽的,那么一切都会排成一行.如果它们不是全等宽的,那么你必须确保它们都使用相同的字体,如果你在两个平台上进行开发,这可能很困难.
实际上,一些开发工具仅支持等宽字体.
另一个原因是等宽字体往往具有更多不同的字符.比较lIiO0 lIiO0
,你会明白我的意思.它们还可以更容易地计算空白.
我怀疑等宽字体是程序员偏爱的基于文本的DOS时代的结转.
另一方面,我,我自己也尝试过Verdana和其他一些推荐的比例字体,但我无法应对这种变化.我的眼睛训练有素,不适合等宽.符号上的语言很重要,例如:C/C++,C#,Perl等,对我来说看起来太不一样了.符号的放置使代码看起来完全不同.
根据代码的性质而不是常规语言,使它正确排列更好.此外,在代码编辑中,有时您想要阻止选择,阻止复制和阻止粘贴.在Visual Studio中,您可以在选择鼠标时使用ALT键进行块选择.在不同的编辑器中可能会有所不同,但我总是发现编辑器中的选项在某些情况下非常重要,除非您使用单倍间距字体,否则它将无法正常工作.
我个人发现在代码编辑器中更容易阅读单倍间距字体.当然,我几乎失明了.这可能会有所不同.我目前在15点使用高对比度字母的深色背景运行consolas字体.
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。