SO に関するフォントのトピックをいくつか見たことがありますが、大部分の人がプログラミング タスクにモノスペース フォントを使用しているようです。私はプログラミングに Verdana を数年間使用してきましたが、モノスペースに関連するものを見逃すことなく、読みやすさが向上していることを本当に気に入っています。
なぜ等幅フォントを使用するのですか?
SO に関するフォントのトピックをいくつか見たことがありますが、大部分の人がプログラミング タスクにモノスペース フォントを使用しているようです。私はプログラミングに Verdana を数年間使用してきましたが、モノスペースに関連するものを見逃すことなく、読みやすさが向上していることを本当に気に入っています。
なぜ等幅フォントを使用するのですか?
等幅フォントの場合:
Il 0O
プロポーショナル フォントでのコーディングは、これまで考えたこともありませんでした。そこで、科学の利益のために、エディターを切り替えて試してみました。
いくつかの簡単なチケットを修正した後の観察結果を次に示します。
!
if (!foo)
{}[]()
vs {}[]())$@%
vs $@%)'"!;:,.
vs '"!;:,.)0Oo iIl
vs 0Oo iIl)ただし、いくつかの肯定的な点があります。確かに、私はそれを少しの間しか使用していませんが、プロポーショナル フォントで少しうまく機能する側面が確かにいくつかあります。
明日、この回答をもう一度更新します(このように丸一日を乗り切ることができると仮定します!)
関連する条件を並べて、それらがグループ化されていることをより明確にするのが好きです。例えば:
if ((var1 == FOO) && ((var2 == BAR) ||
(var2 == FOOBAR)))
可変幅フォントでは、これがさらに難しくなります。
ここでよく目にするのは、「コードの整列」とインデントに関する議論です。以下の点を指摘したい。
したがって、これらすべてをまとめて描画すると、各行を同じ場所で開始し、一貫した間隔が同じ幅であり、識別子が各行の幅を自発的に変更しない場合、コードは実際に整列します! ...何かが違うまで。
例えば:
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 列のテキストを読み取ることができます。さらに、DXCore Documentor パネル (フォーマットされた XMLDOC を表示する) を十分に広く開いて読むことができますが、XMLdoc をドキュメント化するのに十分なテキストを表示することもできます。
等幅フォントを使用すると、コードの整列がはるかに簡単になります。
これは、チームで作業する場合に特に当てはまります。チームの全員が異なるフォントを使用でき、それらがすべて等幅である限り、すべてが一致します。同様に、1 人の人がさまざまな開発ツールを使用する場合、それらがすべて等幅であれば、すべてが整列します。それらがすべて等幅でない場合は、すべてが同じフォントを使用していることを確認する必要があり、2 つのプラットフォームで開発している場合、それは困難な場合があります。
実際、一部の開発ツールは等幅フォントのみをサポートしています。
もう 1 つの理由は、等幅フォントはより明確な文字を持つ傾向があることです。lIiO0 と を比較するとlIiO0
、私の言いたいことがわかるでしょう。また、空白を数えやすくします。
チームで作業する場合、等幅フォントを使用すると、コードが明確になり、全員が使用する等幅フォントを好む場合でも、正しくレイアウトされます。
可変幅フォントを使用するとコードが明確に見えるかもしれませんが、等幅フォントのユーザーがコードを開いた場合、同じように見える可能性はほとんどありません。
リテラルにスペースが 1 つではなく 2 つあるために検索で何かが見つからない理由を数時間かけて理解しようとするだけで、Monospace フォントを使用する必要があることがわかります。設計者が等幅フォントを使用していないときに、Lotus Notes エージェントを修正しようとしたときに、これが 1 回発生しました。コードを CodeWright に貼り付けて印刷するまで、問題が何であるかは明らかではありませんでした。
等幅フォントは、テキストベースの DOS 時代からの持ち越しとして、プログラマーの好みだったのではないかと思います。
一方、私自身、Verdana と他のいくつかの推奨されるプロポーショナル フォントを試しましたが、変更に対処できませんでした。私の目は、モノスペースにはあまりにもよく訓練されています。C/C++、C#、Perl などのような記号を多用する言語は、私にはあまりにも異なって見えます。シンボルの配置によって、コードの外観がまったく異なります。
通常の言語ではなくコードの性質上、正しく並べられている方が適切です。また、コード編集では、ブロック選択、ブロック コピー、ブロック ペーストを行いたい場合があります。Visual Studio では、マウスで選択しながら Alt キーを使用してブロックを選択できます。エディターによっては異なる場合がありますが、エディターでのそのオプションは場合によっては非常に重要であり、等幅フォントを使用していない限り、うまく機能しないことが常にわかっています。
個人的には、等幅フォントの方がコード エディターで読みやすいと思います。もちろん、私はほとんど盲目です。それは違いを生むかもしれません。現在、consolas フォントを 15 ポイントで実行し、背景を暗くしてコントラストの高い文字を使用しています。
1 レベルより深くなると、インデントにスペースを使用すると問題が発生します。
ほとんどの場合、位置合わせの目的で使用されます (関数のパラメーター宣言が複数行にまたがっていて、それらを並べたい場合や、コメントを並べたい場合など)。
タブ文字の問題と同じように、整列のために何かをインデントしたり、他の誰かが異なる好みを持っている場合が複雑な要因だと思います。物事がずれます。