私は プログラミングスタイルに関するウィキペディアの記事 を読んでいて、垂直方向に配置されたコードに対する引数に何かに気づきました:
等幅フォントへの依存。表形式は、エディターが固定幅フォントを使用することを前提としています。最新のコードエディタのほとんどはプロポーショナルフォントをサポートしており、プログラマは読みやすさのためにプロポーショナルフォントを使用することを好むかもしれません。
正直なところ、プロポーショナルフォントを好むプログラマーに会ったことはありません。また、それらを使用する正当な理由も考えられません。なぜ誰かがプロポーショナルフォントを好むのですか?
プロポーショナルフォントに対する共通のポイント、コメント
プロポーショナルフォントに有利な点
m
またはn
と同じスペースにi
を詰め込むと、本当に 良いものを設計するのが困難になります。読み取り可能な等幅フォント 。rnW
とIll
を比較して、フォントの間隔が間違っている例を確認してください。個人的に、私は the 'Ubuntu' font とWenQuanYi Zen Hei Monoの両方を喜んで使用しており、どちらか一方を優先することはできません。 :)
Ubuntu 10とWenQuanYi Zen Hei Mono 9を比較。あなたが私に尋ねれば、ここには明確な勝者はありません。
つまり、フォントは食べ物のようなものです。丸みのあるものが好きな人もいれば、辛くてスパイシーな人もいます。適切なフォントが1つもないか、私たち全員が今使っているでしょう。いいね!
モノスペース以外のフォントをコーディングに使用することが実質的に不可能になる理由がありますが、他の回答では言及されていません:rectangular selections。
この機能は、通常はあまり役に立たず、通常のテキストを操作するときにあまり知られていないことが多く、開発者にとって不可欠です。数行の//
コメントを削除する、かっこやその他の文字を追加するなど、さまざまなシナリオを想像できます。これは、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 Webサイト自体から自分の評価を読み込み、常に最新のデータを持つことができる方法で置き換えたいと思います。 MyReputation
プロパティをリファクタリングし始めましたが、スコープ内の初期化を削除したいと思います。私が4つではなく、84のSE Webサイトをすべて持っていると想像してください。
モノスペースフォントのConsolasを使用すると、次のようになります。 Backspaceキーを押すだけで、残りの時間を費やして、実際に役立つことを実行できます。
そして、ここではSegoe UIと同じです。痛い!
私はプロポーショナルフォントを使用していましたが、主に句読点が実際に区別しやすいことがわかったためですが、他の誰もそれをせず、誰もが無意識に等間隔フォントを想定しているため、あきらめてきました(Wikipediaの記事で言及されているように、表形式でフォーマット、コメントのアスキーアートなど)。
さらに、Microsoftが修正したくない Visual Studioの問題 は、基本的に、適切に設計されたプロポーショナルフォントを使用することを不可能にします。
個人的には気にしません。タブを揃えてフォントを読みやすくしている限り、モノスペース、プロポーショナル、その他の壁外のスペースのどちらを使用してもかまいません。タブをスペースで置き換え始めないでください。私とけんかをすることはありません。
私はプロポーショナルフォントを使用し(Arialはこれまでに見つけた中で最も優れており、Verdanaは次点の次点です)、正直なところ、固定幅のフォントを使用していることにまだ戸惑っています。なぜそのような読みやすさを犠牲にしたいのですか?表形式のフォーマットが望ましいかどうかは理解できましたが、フォントに関係なくメンテナンスの悪夢になるため、望ましくありません。
短い行と多くのオープンスペースがある言語では、等幅フォントを使用します。可変幅フォントを使用すると、長い行と高密度の構文がある場合に読みやすさが向上することがわかりました。
ほとんどのプロポーショナルフォントの問題は、それらがプログラミング用に設計されていないことです。 このページ は、いくつかのフォントを示しています。
Bjarne Stroustrupの本C++プログラミング言語で覚えていますが、コードには拡張間隔フォントが使用されました。 (ウェブ上でサンプルページを見つけることができません)
正確な理由は覚えていませんが、彼はこれと他の変更点(C++言語自体)を新しい紹介として言及したと思います本。
個人的には、固定スペースの方が好きです。コンソラは私のお気に入りです。
PharoのようなSmalltalk環境はプロポーショナルフォントを使用しており、言語スタイルにより、非常に見栄えがします。しかし、GoのようなCスタイルの言語や、ErlangやPythonのような他の言語では、私は等幅フォントを好みます。
しばらくの間、Eclipse用の読みやすいフォントを見つけるのにしばらく時間をかけ、XPの下でかなり前からVerdanaを使用していました。Consolasは、本当にプログラミングに優れているため、それを解決しました。
これらは私の発見です:
それゆえ、私はそれは私にとって問題の価値がないとわかりました。
配置とその他のレイアウトに関する注意:保存するたびに各ファイルを自動フォーマットするようにEclipseを設定したので、すべての豪華なレイアウトは自動的にリセットされます。 Eclipseは複数のスペースの代わりにタブを使用しており、プロポーショナルフォントでもタブを正しく配置できます。したがって、フォーマッタレイアウトcanは互いに重なりますが、それを持たない標準のフォーマッタ構成を使用します。
フォレンジック分析を行う場合、すべての保存時に全員に自動フォーマットを適用することで、ソース管理システムの誤検知が最小限に抑えられると思います。
モノスペースフォントを使用すると、さまざまな属性を比較できます。
比較:
name1 = ["William"、 "Shakespear"、1564、 "Peotry"]
name2 = ["John"、 "Locke"、1632、 "Philosophy"]
name3 = ["Jonathan"、 "Littell"、1967、 "Prose"]
To:
name1=["William", "Shakespear", 1564, "Peotry" ]
name2=["John", "Locke", 1632, "Philosophy" ]
name3=["Jonathan", "Littell", 1967, "Prose" ]
プロポーショナルフォントは、同等の属性を正確に上下に配置することはできません。
プロポーショナルフォントの方がきれいだと思いますが、一部のフォント、特にサンセリフフォントでは、「I」と「l」の違いがわかりません。待って、もう一度その変数に名前を付けましたか?