SOでいくつかのフォントトピックを見てきましたが、大部分の人々はプログラミングタスクに固定幅フォントを使用しているようです。読みやすさの向上。モノスペースに関連するものを見逃すことはありません。
なぜ等幅フォントを使用するのですか?
等幅フォントの場合:
Il 0O
プロポーショナルフォントでコーディングすることを考えたことがありません。そのため、科学のために、編集者を切り替えて試してみました。
いくつかの簡単なチケットを修正した後の観察結果を次に示します。
if (!foo)
の_!
_演算子を見逃すのは簡単です。 ((!foo)の場合、参照してください!){}[]()
vs {} []())$@%
_ vs $ @%)'"!;:,.
_ vs '"!;:、。)0Oo iIl
_ vs 0Oo iIl)ただし、areいくつかのプラスのポイントがあります。確かに私はほんの少しの間それを使用していましたが、プロポーショナルフォントで少し良く機能するいくつかの側面が確かにあります:
明日、この回答をもう一度更新します(このように丸一日終わらせることができると仮定します!)
グループ化されていることをより明確にするために、関連する条件を並べるのが好きです。例えば:
if ((var1 == FOO) && ((var2 == BAR) ||
(var2 == FOOBAR)))
可変幅フォントはこれをより困難にします。
ここで私が見続けることの1つは、「コードの整列」とインデントの議論です。次のことを指摘したいと思います。
したがって、このすべてを一緒に描画すると、各行を同じ場所で開始し、一貫した間隔が同じ幅であり、識別子が各行の幅を自発的に変更しない場合、実際にコードが整列します! ...何かが異なるまで。
例えば:
identifier.Method().Property.ToString();
identifier.Method().OtherGuy.ToString(); //how lined up and pretty!
identifier.Method().Sumthing.YouGetThePoint;
私が認める1つのポイントは、英数字以外の文字は通常それほど広くないということです。これらには)(] [} {,: | "; '、`!および。が含まれます。ただし、これはフォントエディタで修正することができます...単に幅を広くすることで解決できます。非固定スペースに固有の問題ではありません。それに対する多くの需要はなかったので、まだ行われていません。
要約すると、個人的な好みは結構ですが、モノスペースではなくモノスペースを好む実用的な理由はほとんどないと思います。あなたはそれの外観が好きですか?確かに、等幅を行います。より多くのものを画面に収めたいですか?非モノになります。しかし、人々が異質性のような非モノスペースを扱う方法は少し誇張されています。
等幅フォントの多くの引数は、微調整するだけで簡単に反論できるため、このスレッドに興味を持ちました。だから私はIDEをCalibriに切り替えた(これは見た目が丸く、UIの画面で読みやすいように最適化されているため、完璧だ)。すべての問題を無視する)と4スペース幅は明らかに十分ではないので、10に切り替えました。
今はかなりよさそうだ。ただし、発見できる明らかな問題がいくつかあります。しばらくこの設定をテストした後、後でさらに明らかになるかもしれません。
シンボルがうまく整列しません。例として、次のC#コードを考えます。
var expr = x => x + 1;
矢印(=>
)は、ほぼすべての等幅フォントの単位のように見えます。他のフォントの2つの隣接する文字のように見えます。 >>
などの演算子にも同じことが当てはまります。
状況依存のインデントは完全に壊れています。一部のコンテキストでは、一定数のタブをインデントするだけでは不十分です。次の方法でインデントされる可能性のあるLINQ式を使用します。
var r = from c in "This, apparently, is a test!"
where !char.IsPunctuation(c)
select char.ToUpper(c);
プロポーショナルフォントでこれを行うことはできません。
全体として、文字が狭すぎます。繰り返しますが、追加の文字間隔が役立つ場合があり、句読点の場合には間違いなく必要です。ただし、プロポーショナルフォントを読みやすくするためのこの調整は、モノスペースフォントを自然にエミュレートするだけだと感じています。これは、これまでに述べたすべてのポイントに当てはまります。
私はComic Sans MSを使用します。これは、小さなポイントサイズとして非常に合理的に見えます(見出しサイズで「ジョーク」に見えるだけです)。見た目は簡単ですが、VSのいくつかのドッキングパネルを開いたまま、テキストウィンドウに適切な量のコードを表示できるようにテキストを十分に小さくします。
ソリューションエクスプローラーパネルを表示したまま、水平スクロールなしで100列のテキストを読み込めます。さらに、(フォーマットされたXMLDOCを表示する)DXCore Documentorパネルを開いて、XMLdocsをドッキングするのに十分なテキストを表示しながら、読むのに十分な大きさで開くことができます。
チームで作業する場合、モノスペースフォントを使用することで、使用するモノスペースフォントに関係なく、コードが明確になり、すべてのユーザーに対して正しくレイアウトされるようになります。
可変幅フォントを使用すると、コードが明確に見える場合がありますが、等幅フォントのユーザーが開いた場合に同じように見えることはほとんどありません。
モノスペースフォントを使用する必要があることを認識するために、リテラルに1つではなく2つのスペースがあるため、検索で何かが見つからない理由を理解しようとするのに数時間かかります。 Lotus Notesエージェントを修正しようとしたとき、デザイナーが固定幅フォントを使用していなかったときに、これが一度起こりました。コードをCodeWrightに貼り付けて印刷するまで、問題が何であるかが明らかでした。
等幅フォントを使用すると、コードを簡単に整列できます。
これは、チームで作業する場合に特に当てはまります。チームの全員が異なるフォントを使用でき、すべてが等幅である限り、すべてが揃います。同様に、一人の人が多くの異なる開発ツールを使用する場合、それらがすべて等幅である場合、すべてが揃います。すべてが等幅ではない場合は、すべてが同じフォントを使用していることを確認する必要があります。2つのプラットフォームで開発している場合は難しい場合があります。
実際、一部の開発ツールは等幅フォントのみをサポートしています。
別の理由は、等幅フォントはより明確な文字を持つ傾向があることです。 lIiO0とlIiO0
を比較すると、私が言っていることがわかります。また、空白のカウントがはるかに簡単になります。
モノスペースフォントは、テキストベースのDOS時代から持ち越したプログラマーの好みだったと思います。
一方、私自身は、Verdanaおよびその他の推奨されるプロポーショナルフォントをいくつか試しましたが、変更に対処できませんでした。私の目は、モノスペースに対してあまりにもよく訓練されています。 C/C++、C#、Perlなど、シンボルに重点を置いた言語は、私にはあまりにも異なって見えます。シンボルの配置により、コードはまったく異なって見えます。
通常の言語ではなくコードの性質上、正しく整列させる方が適切です。また、コードの編集では、選択、ブロックのコピー、および貼り付けをブロックしたい場合があります。 Visual Studioでは、マウスの選択中にAltキーを使用してブロックを選択できます。エディターによって異なる場合がありますが、エディターのそのオプションは常に非常に重要な場合があり、等幅フォントを使用している場合を除き、うまく機能しません。
個人的には、等幅フォントはコードエディターで読みやすいと感じています。もちろん、私はほとんど盲目です。それが違いを生むかもしれません。現在、コンソラフォントを15ポイントで実行し、背景に濃いコントラストの文字を使用しています。
インデントにスペースを使用すると、1レベルより深くなると問題になります。
主に位置合わせの目的(関数パラメーター宣言が複数の行にまたがってそれらを並べたいとき、コメントを並べるときなど)。
タブ文字の問題と同様に、複雑な要因は、整列のために何かがインデントされ、他の誰かが異なる好みを持っているときだと思います。物事がずれます。