我在阅读有关编程风格的Wikipedia文章,并注意到反对垂直对齐的代码的某个论点:
依靠等宽字体;表格格式假定编辑器使用固定宽度的字体。大多数现代代码编辑器都支持比例字体,程序员可能更喜欢使用比例字体以提高可读性。
老实说,我认为我从未见过喜欢使用比例字体的程序员。我也没有想到使用它们的任何真正好的理由。为什么有人会喜欢比例字体?
[citation needed]
:)
我在阅读有关编程风格的Wikipedia文章,并注意到反对垂直对齐的代码的某个论点:
依靠等宽字体;表格格式假定编辑器使用固定宽度的字体。大多数现代代码编辑器都支持比例字体,程序员可能更喜欢使用比例字体以提高可读性。
老实说,我认为我从未见过喜欢使用比例字体的程序员。我也没有想到使用它们的任何真正好的理由。为什么有人会喜欢比例字体?
[citation needed]
:)
Answers:
评论反对比例字体的共同点。
支持比例字体的要点
m
在与an n
或a 相同的空间中添加i
文字,这确实使设计好可读的等宽字体确实具有挑战性。rnW
并Ill
在此Proggy Clear屏幕截图中查看错误的字体间距示例。就个人而言,我一直很高兴地同时使用'Ubuntu'字体和WenQuanYi Zen Hei Mono,却发现自己无法与其他人相比。:)
Ubuntu 10和WenQuanI Zen Hei Mono 9进行了比较。如果您问我,这里没有明确的赢家。
也就是说,字体就像食物。有些人喜欢将它们弄圆,有些则喜欢将它们麻辣烫-没有合适的字体,否则我们所有人现在都将使用它。可以选择!
有一个原因使得实际上不可能使用等宽字体以外的字体进行编码,但是在其他答案中没有提到:矩形选择。
此功能对于开发人员来说是必不可少的,它在使用普通文本时通常不是很有用,也不是很知名。您可能会想到多种情况:删除//
多行注释,添加括号或其他字符等。在矩形选择的高级支持下,这尤其有价值,例如在Visual Studio 2010中,您不仅可以选择和删除文本,但选择并替换它。
让我们举个例子:
private IEnumerable<SELove> StackExchangeRocks()
{
var howILoveSEWebsites = new []
{
new SELove { SiteName = "Stack Overflow", MyReputation = 5269, MyRating = Rating.Outstanding, },
new SELove { SiteName = "Programmers", MyReputation = 16937, MyRating = Rating.Outstanding, },
new SELove { SiteName = "Super User", MyReputation = 650, MyRating = Rating.QuiteGood, },
new SELove { SiteName = "Server Fault", MyReputation = 489, MyRating = Rating.Good, },
// Initialize other websites here.
};
return howILoveSEWebsites.OrderByDescending(c => c.MyRating);
}
private class SELove
{
public string SiteName { get; set; }
public int MyReputation { get; set; }
public Rating MyRating { get; set; }
}
private enum Rating
{
Outstanding,
Good,
QuiteGood,
}
在此旧代码中,我想用一种方法替换代码内评级,该方法将从Stack Exchange网站本身加载我的评级,从而始终拥有最新数据。我开始重构该MyReputation
属性,现在我想删除范围内的初始化。想象一下,我没有四个,但是全部有84个SE网站。
这是使用等宽字体Consolas时发生的情况。我按Backspace键,仅此而已,我可以花剩余的时间做一些实际有用的事情。
这里有同样的事情的Segoe UI。哎哟!
CTRL-D
中的SublimeText和VSCode中使用“选择下一个出现项” ALT-J
。接下来,SHIFT-CTRL-RIGHT ARROW
将选择范围扩展到右侧的下一个标记并完成。主要优点是,无需人为对齐即可进行编辑。缺点,如果您将某些东西对齐,它将不再是。
我曾经使用比例字体,主要是因为我发现标点符号实际上更容易区分,但是随着时间的流逝,我已经放弃了,因为其他人都没有这样做,而且每个人都在不知不觉中采用了等宽字体(如Wikipedia文章所提到的,试图以表格形式格式,评论中的ascii艺术等)。
此外,Microsoft不想解决的Visual Studio问题基本上使使用反义字体的设计成为不可能。
我个人不在乎。只要您使制表符保持对齐且字体清晰易读,就可以使用等宽,比例或其他一些墙外间距,这一点我都不在乎。只是不要开始用空格替换我的标签,并且您不会与我吵架。
我使用比例字体(Arial是到目前为止我发现的最好的字体,Verdana排名第二),老实说,我仍然对人们使用固定宽度字体感到困惑。您为什么要牺牲这样的可读性?我可以理解表格格式是否可取,但不是,因为它会造成维护的噩梦,而与字体无关。
我记得在Bjarne Stroustrup的书《 C ++编程语言》中,使用了Propotianite间隔的字体作为代码。(我无法在网络上找到任何示例页面)
我不记得确切的原因,但认为他提到了这一点,并彼此变化(我认为C ++语言本身)作为新引进的那本书。
就个人而言,我更喜欢固定空间的。Consolas是我的最爱。
对于行数短且有很多开放空间的语言,我更喜欢等距字体。我发现在行长且语法密集的情况下,可变宽度字体可以提高可读性。
大多数比例字体的问题在于它们不是为编程而设计的。此页面显示了一些字体。
我花了一些时间为Eclipse找到一种易读的好字体,在XP下我花了相当长的时间使用Verdana。Consolas解决了这一问题,因为它对于编程而言确实很棒。
这些是我的发现:
因此,我发现这对我来说不值得麻烦。
关于对齐方式和其他布局的注意事项:我已将Eclipse设置为在每次保存时自动格式化每个文件,因此所有花式布局都会自动重置。Eclipse使用制表符代替多个空格,即使使用比例字体也可以正确定位这些制表符。因此,格式化程序的布局可以相互重叠,但是我们使用的标准格式化程序配置没有这种布局。
我相信,在进行法医分析时,每次保存时对每个人实施自动格式化都会最大程度地减少源控制系统中的误报。
永远不会,因为等宽字体使我可以比较不同的属性。
相比:
name1 = [“威廉”,“莎士比亚”,1564,“肖像”]
name2 = [“ John”,“ Locke”,1632,“哲学”]
name3 = [“ Jonathan”,“ Littell”,1967,“ Prose”]
至:
name1=["William", "Shakespear", 1564, "Peotry" ]
name2=["John", "Locke", 1632, "Philosophy" ]
name3=["Jonathan", "Littell", 1967, "Prose" ]
比例字体不能将等效属性恰好一个放在另一个之上。
虽然我确实觉得比例字体更漂亮,但在某些字体中(尤其是sans-serif字体),看不到“ I”和“ l”之间的区别。等等,我又给该变量命名了什么?
'' vs "