SOに関するフォントのトピックをいくつか見てきましたが、大多数の人がプログラミングタスクにモノスペースフォントを使用しているようです。私はプログラミングにVerdanaを数年間使用しており、モノスペースに関連するものを見逃すことなく、読みやすさの向上が本当に気に入っています。
なぜ等幅フォントを使用するのですか?
SOに関するフォントのトピックをいくつか見てきましたが、大多数の人がプログラミングタスクにモノスペースフォントを使用しているようです。私はプログラミングにVerdanaを数年間使用しており、モノスペースに関連するものを見逃すことなく、読みやすさの向上が本当に気に入っています。
なぜ等幅フォントを使用するのですか?
回答:
等幅フォントの場合:
Il 0O
私はこれまでプロポーショナルフォントでコーディングすることさえ考えたことがありません。それで、科学の利益のために、私はちょうどそれをやってみるために私の編集者を切り替えました。
簡単なチケットをいくつか修正した後のいくつかの所見を次に示します。
!
でオペレータをif (!foo)
。((!foo)の場合、参照してください!){}[]()
vs {} []())$@%
vs $ @%)'"!;:,.
vs '"!;:、。)0Oo iIl
vs 0Oo iIl)ありますいくつかの肯定的な点は、しかし、。確かに私はそれをほんの少ししか使っていませんが、プロポーショナルフォントで少しうまくいくいくつかの側面が確かにあります:
明日またこの回答を更新します(このように一日中やり遂げることができると仮定します!)
グループ化されていることをより明確にするために、関連する条件を並べるのが好きです。例えば:
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);
プロポーショナルフォントではこれを行うことはできません。
全体として、文字が狭すぎます。繰り返しになりますが、追加の文字間隔が役立つ場合があり、パンクチュエーションの場合は間違いなく必要です。ただし、プロポーショナルフォントを読みやすくするためのこのすべての調整は、等幅フォントを自然にエミュレートするだけだと感じています。これまでに述べたすべての点に確かに当てはまります。
私はComicSans MSを使用しています。これは、小さなポイントサイズとしてはかなり合理的に見えます(見出しのサイズで「冗談」に見え始めるだけです)。見た目は簡単ですが、VSのドッキングされたパネルのいくつかを開いた状態で、テキストウィンドウに適度な量のコードが表示されるようにテキストを十分に小さくしてください。
ソリューションエクスプローラーパネルを外しても、水平スクロールなしで100列のテキストを読み取ることができます。移動すると、DXCore Documentorパネル(フォーマットされたXMLDOCを表示)を十分に大きく開いて、XMLdocsを文書化するのに十分なテキストを表示しながら読むことができます。
モノスペースフォントを使用する必要があることを理解するために必要なのは、リテラルに1つではなく2つのスペースがあるために、検索で何かが見つからない理由を理解するために数時間かかることです。デザイナーがモノスペースフォントを使用していなかったときに、Lotus Notesエージェントを修正しようとしたときに、これが一度発生しました。コードをCodeWrightに貼り付けて印刷するまで、問題が何であるかは明らかでした。
等幅フォントを使用すると、コードの整列がはるかに簡単になります。
これは、チームで作業する場合に特に当てはまります。チームの全員が異なるフォントを使用でき、それらがすべて等幅である限り、すべてが整列します。同様に、1人の人が多くの異なる開発ツールを使用する場合、それらがすべて等幅であれば、すべてが整列します。それらがすべて等幅でない場合は、すべてが同じフォントを使用していることを確認する必要があります。2つのプラットフォームで開発している場合、それは難しい場合があります。
実際、一部の開発ツールは等幅フォントのみをサポートしています。
もう1つの理由は、等幅フォントはより明確な文字を持つ傾向があることです。lIiO0をlIiO0
と比較すると、私が何を意味するかがわかります。また、空白のカウントがはるかに簡単になります。
テキストベースのDOS時代からの引き継ぎとして、等幅フォントがプログラマーの好みだったのではないかと思います。
一方、私自身、Verdanaと他のいくつかの推奨プロポーショナルフォントを試しましたが、変更に対処できませんでした。私の目はモノスペースにはあまりにもよく訓練されています。C / C ++、C#、Perlなど、記号が多い言語は、私にはあまりにも異なって見えます。シンボルの配置により、コードの外観が完全に異なります。
正規言語よりもコードの性質上、正しく並べておくとよいでしょう。また、コード編集では、ブロック選択、ブロックコピー、ブロック貼り付けが必要になる場合があります。Visual Studioでは、マウスを選択しながらAltキーを使用してブロックを選択できます。エディターによって異なる場合がありますが、エディターでのそのオプションが非常に重要な場合があり、等幅フォントを使用しない限り、うまく機能しません。
個人的には、等幅フォントはコードエディタで読みやすいと思います。もちろん、私はほとんど盲目です。それは違いを生むかもしれません。私は現在、高コントラストの文字で暗い背景の15ポイントでconsolasフォントを実行しています。
インデントにスペースを使用すると、1レベルより深くなると問題になります。