当前位置:   PHOTOSHOP > 正文

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

ide,fonts,text-editor,编辑器,go,c#,xml,程序员,perl,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工具

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

为什么使用等宽字体?



1> Ryan..:

以等宽字体:

等长字符串文字看起来相等.

更容易看到薄的标点符号,如:(){}

类似的角色看起来更加不同:Il 0O vs Il 0O

你知道一行是否会在X字符宽的窗口上换行.这意味着您的团队可以标准化100个字符的行,并且一行总是看起来像一条线


第二点和第三点实际上并不是等宽的.这更像是一个使用哪种特定字体的问题,而不是它是否是等宽字体.Verdana在这两点都做得很好(比大多数等宽字体,imo更好),这就是我使用它的原因
要纠正这些中的每一个:等效字符串看起来宽度相等,我怀疑为什么你关心不同的字符串并只共享一个长度.非monowidth并不表示标点字符很薄; 你应该使用不同的非单声道字体."类似"字符在等宽字母中看起来并不一定; 例如,SimHei具有相同的O vs 0.它是字体的属性,而不是宽度.最后,如果您的团队实际上已经标准化,那么您可以选择非单声道并标准化"不要让它流出屏幕".

2> Dan..:

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

在修复了几张简单的门票之后,这里有一些观察:

代码似乎非常密集.我的大多数代码都是大约80列,很少超过100列.比例字体将其缩小到我编辑器左侧的一个小条带.如果你的屏幕空间很短,也许有用,但它看起来不必要紧凑.

代码的"纹理"丢失了.很难说我正在看什么样的结构 - 它只是一个大块的文本,需要几乎逐个字符地阅读.

这是容易错过!的运营商if (!foo).(如果(!foo),请看!)

标点符号定义非常严格.许多很难分辨({}[]()vs {} []())

一些标点字符比其他字符串大得多,推断重点在没有意图的地方($@%vs $ @%)

有些角色非常狭窄,很难识别('"!;:,.vs'"!;:,..)

一些数字和字母非常相似(0Oo iIlvs 0Oo iIl)

非常依赖于语法高亮,没有它,几乎不可能做出确认报价是平衡的等等.

对齐(除了简单的缩进)完全被打破.你可以通过抛出额外的空间来对它进行分类,但由于字体的比例性,这些行可能不会完全对齐 - 代码看起来更麻烦.

正则表达式......有趣!

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

'单词'更容易阅读 - 拼写错误(例如错误地拼写变量)跳出来.

我觉得使用更长,更具描述性的变量名称会更好(可能因为它们扫描得更好,可能是因为文本的水平大小被压缩了)

阅读这样的代码似乎更容易一些.我的大脑更容易"标记"每个单词并理解其含义.虽然因为标点字符难以阅读但仍然很难 - 但也许这会因为花一点时间习惯它而改变

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


不错的工作!我不知道你使用的是什么字体,因为你对某些角色看起来太多相似的大多数要点都不会打扰我.
"我以前从未考虑使用比例字体进行编码.因此,为了科学的利益,我只是将我的编辑转过来试试." 你有多少年编程并习惯了固定宽度?你在这里有一个不错的答案,但你没有考虑到你自己的偏见(如果没有更多的工作就很难做到这一点),这不是很好的科学.
+1实际尝试它
专门为编程设计的比例字体可以解决大多数常见的异议.在http://code.google.com/p/i3project/wiki/Fonts上有一些用于编码的比例字体
@Roger:这可能不是一门好学(做这样的研究几乎是不可能的,而且非常昂贵!)但原因似乎是合情合理的.破碎的缩进是一个难以理解的参数(在当前的IDE /编辑器中;通过使用与语义匹配的制表位巧妙地缩进来解决此问题).

3> DGentry..:

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

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

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


@Calmarius:"让它变得可读"是我整天编码的一部分,我在不知不觉中这样做.如果您努力改变代码,您还应该努力降低维护成本.
有效点.但是垂直排列的东西有一个问题:如果你需要在if语句中改变一些东西怎么办?您可能需要重新调整所有内容.
实现这一目标的更好方法是[弹性tabstops](http://programmers.stackexchange.com/questions/137290),即使你坚持使用等宽字体.并不是说它是_current_编辑器的实用替代品......
@endolith您可以在第一行的两个括号之间插入一个制表符,在第二行的左括号之前插入一个制表符.现在这将在vanilla实现中在第1行的两个括号之间添加一些额外的空间,但是你会得到一个在编辑时保持的对齐,这对我来说听起来非常值得权衡.事实上,我想我甚至会在两行的右括号后添加一个tabstop.请参见[screenshot](http://i.imgur.com/JdFtiI1.png),其所有可变宽度字体荣耀,或[自己尝试](http://nickgravgaard.com/elastictabstops/).

4> bwerks..:

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

八个空格总是两倍于任何字体的四个空格.

两个选项卡的长度始终是任何字体的一个选项卡的两倍.

一行上的任何标识符在下一行总是相同的宽度...以任何字体!

当然,如果你的队友使用的是等宽的,而你却不是,它看起来会有所不同......但是你应该对某些东西进行标准化 - 无论它是什么 - 如果这是真的那么对每个人来说都是一样的. ..任何字体!对于笑声,你也可以尝试让每个人都使用等宽屏,并给他们一半的宽屏显示器......看看情况如何.

如果您正在做任何依赖于根据屏幕上这些字符的柱状位置排列代码的内容,而不是您正在使用的标识符的范围,我认为您正在做的是一个黑客.标识符永远不应该以其名称质量为代价限制在一定数量的字符上.除此之外......你还没有在代码中用星号绘制带有星号的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.//...但谁在乎?他们是不同的属性!

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

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


+1用于广泛认识到可以制作专门用于编程的比例字体,而不必是等宽字体.如果比例字体在编程中更常见,那么可以出现一种新的"编程排版"文化."异端"心态并非如此.
在屏幕上显示更多内容的+1.和ASCII盒......好吧,都浪费时间.
你在你的观点中做出了彻底的假设:1)对齐只需要在一行的开头发生,2)多行上类似调用的对齐将始终在同一个"identifier.Method()"对象上,3)柱状位置与标识符名称有关,4)在评论中唯一需要对齐的是"带星号的ASCII框".对不起,-1.
+1; 这些点实际上很难被欣赏,直到一个人使用比例字体一段时间.
我冒犯了你,但不是因为你贬低了我,而是因为你没有提供一丝反驳.你基本上只是把我的观点回复给我,哈.但是,我同意!对齐仅在线条不同之前才有意义; 方法调用与不同参数的对齐无关紧要,因为你不应该限制变量名的长度; 柱状位置INDEED与标识符名称无关; 当你在公司角钱里沉迷于ascii艺术时,你唯一需要调整的时候就是这样.

5> Konrad Rudol..:

我对此线程感到好奇,因为对于等宽字体的许多参数可以通过一些调整轻松地反驳.所以我将我的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);

你不能用比例字体来做这件事.

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



6> James Curran..:

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

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


它很可能是可读的,但我仍然不会公开承认它:)
完全鲭鱼 - 我刚试过这个并且它有效.詹姆斯可能已经发现了Comic Sans存在的唯一剩余原因 - 它明显可读到7pt.下次我必须用千行方法重构别人的代码混乱,这是我将使用的字体.
哦伙计.为什么?我很想听听你的理由!
使用漫画sans,好吧,*任何东西*:)
你的理由是"它很小"?在Comic Sans的所有功能中,它的"小"很少会经常被其他字体选中.另外,它让你看起来像是12岁.如果我和你一起工作,那我现在肯定会嘲笑你:)
@Dan,不,它是*可读*当它很小时,这是选择字体时的常用优先级.嘲笑一个人的字体选择让你看起来12.

7> Tom Robinson..:

如果您在团队中工作,那么单倍间距字体可确保代码清晰且正确地为每个人布置,无论他们喜欢使用单倍间距字体.

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



8> bruceatk..:

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


或者您可以使用具有更宽空间的比例字体.比例本身并不会引起你提到的问题.

9> SLaks..:

等宽字体使得排队代码变得更加容易.

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

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

另一个原因是等宽字体往往具有更多不同的字符.比较lIiO0 lIiO0,你会明白我的意思.它们还可以更容易地计算空白.


"一切都会排好" - 只有当你的团队已经解决了标签与空格的一个神圣战争和/或具有统一的标签宽度设置.
即使您使用制表符缩进,仍应使用空格进行缩进后对齐.

10> spoulson..:

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

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



11> stephenbayer..:

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



12> John Kraft..:

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/PHOTOSHOP/detail/15354
推荐阅读
  • 如何解决《什么是PHP的最佳IDE?》经验,为你挑选了10个好方法。php,ide,eclipse,svn,ruby,javascript,git,html,css,json,sql,编辑器,mysql,vb,c#,perl,服务器,pyt... [详细]

  • 如何解决《如何在EclipsePDT中使用自动换行功能来​​处理PHP文件?》经验,为你挑选了4个好方法。php,eclipse,eclipse-pdt,word-wrap,windows,xml,css,go,编辑器,macos,DevB... [详细]

  • 如何解决《基于流程的编程》经验,为你挑选了3个好方法。language-agnostic,paradigms,服务器,linux,编辑器,程序员,sql,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,... [详细]

  • 如何解决《访问Project>References窗口时出错?》经验,为你挑选了3个好方法。vb6,registry,regtlib,windows,vb,编辑器,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具... [详细]

  • 如何解决《为什么我无法在Windows身份验证模式下使用SQLExpress从桌面上读取.BAK文件》经验,为你挑选了1个好方法。sql-server,windows-authentication,sql,windows,编辑器,安全,De... [详细]

  • 如何解决《字符串属性中的换行符》经验,为你挑选了8个好方法。xaml,vb,xml,编辑器,linux,git,windows,go,perl,sql,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二... [详细]

  • 如何解决《为什么Emacs中的fixnums只有29位?》经验,为你挑选了3个好方法。lisp,emacs,elisp,程序员,容器,编辑器,算法,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码... [详细]

  • 如何解决《有没有JavaScript实时语法荧光笔?》经验,为你挑选了2个好方法。javascript,wysiwyg,syntax-highlighting,编辑器,https,html,DevBox,在线流程图,编程,编程问答,程序员,... [详细]

  • 如何解决《使DHTMLEd控件的代码用带引号的引号替换直引号》经验,为你挑选了1个好方法。html,vb6,dom,vb,编辑器,javascript,windows,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,... [详细]

  • 如何解决《编程的字体大小?》经验,为你挑选了1个好方法。font-size,windows,编辑器,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具... [详细]

  • 如何解决《Delphi2009中的Unicode控制台应用程序》经验,为你挑选了3个好方法。delphi,unicode,console,delphi-2009,windows,编辑器,DevBox,在线流程图,编程,编程问答,程序员,开发... [详细]

  • 如何解决《如何在VS2008中很好地重新格式化XAML?》经验,为你挑选了1个好方法。.net,wpf,formatting,xaml,编辑器,xml,c#,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解... [详细]

  • 如何解决《使用Xcode的测试类助手编辑器和Swift类》经验,为你挑选了0个好方法。xcode,unit-testing,xctest,swift,编辑器,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解... [详细]

  • 如何解决《我是否通过为WYSIWYG工具设计ASP.NET组件来浪费我的时间》经验,为你挑选了1个好方法。c#,vb.net,asp.net,wysiwyg,html,编辑器,服务器,DevBox,在线流程图,编程,编程问答,程序员,开发者... [详细]

  • 如何解决《调试是一种难闻的气味-如何说服他们?》经验,为你挑选了5个好方法。debugging,tdd,程序员,编辑器,服务器,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳... [详细]

  • 如何解决《字符串替换转义字符》经验,为你挑选了2个好方法。c#,string,resx,xml,编辑器,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发... [详细]

  • 如何解决《您最喜欢的ZXSpectrum开发工具是什么?》经验,为你挑选了2个好方法。zxspectrum,z80,sinclair,编辑器,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,... [详细]

  • 如何解决《蚀颜色》经验,为你挑选了1个好方法。eclipse,syntax-highlighting,colors,vim,php,html,编辑器,css,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解... [详细]

  • 如何解决《Vim关键字完成》经验,为你挑选了2个好方法。c,vim,编辑器,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工具... [详细]

  • 如何解决《如何在TextView中水平和垂直居中文本?》经验,为你挑选了28个好方法。android,textview,xml,编辑器,go,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,... [详细]

相关标签
  

闽ICP备14008679号