85

SO に関するフォントのトピックをいくつか見たことがありますが、大部分の人がプログラミング タスクにモノスペース フォントを使用しているようです。私はプログラミングに Verdana を数年間使用してきましたが、モノスペースに関連するものを見逃すことなく、読みやすさが向上していることを本当に気に入っています。

なぜ等幅フォントを使用するのですか?

4

15 に答える 15

109

等幅フォントの場合:

  • 等しい長さの文字列リテラルは等しく見えます。
  • () {} のような細い句読点が見やすくなります。
  • 類似したキャラクターはより異なって見える: Il 0O vsIl 0O
  • X 文字幅のウィンドウで行が折り返されるかどうかはわかっています。これは、チームがたとえば 100 文字の行で標準化できることを意味し、行は常に行のように見えます。
于 2008-10-20T14:30:13.900 に答える
107

プロポーショナル フォントでのコーディングは、これまで考えたこともありませんでした。そこで、科学の利益のために、エディターを切り替えて試してみました。

いくつかの簡単なチケットを修正した後の観察結果を次に示します。

  • コードは非常に密集しているようです。私のコードのほとんどは約 80 列で、めったに 100 列を超えません。プロポーショナル フォントは、エディターの左側の小さなストリップに押しつぶされます。画面スペースが少ない場合は便利かもしれませんが、不必要にコンパクトに見えます.
  • コードの「質感」が失われます。私が見ている構造の種類を判断するのは困難です。ほとんど文字ごとに読む必要があるテキストの大きなスラブです。
  • の演算子を見逃すのは非常に簡単です。((!foo) の場合、参照してください!)!if (!foo)
  • 句読点の定義は非常に不適切です。多くは見分けがつきにくい ( {}[]()vs {}[]())
  • 一部の句読点文字は他の文字よりもはるかに大きく、意図しないところで強調を推測します ( $@%vs $@%)
  • 一部の文字は非常に狭く、識別が非常に困難です ( '"!;:,.vs '"!;:,.)
  • 一部の数字と文字は非常に似ています ( 0Oo iIlvs 0Oo iIl)
  • 私は構文の強調表示に非常に依存しています。それがなければ、引用符のバランスが取れていることを確認するなどのことを行うことはほとんど不可能です.
  • 配置 (単純なインデントを除く) は完全に壊れています。余分なスペースを入れることで翼を並べることができますが、フォントのプロポーショナルな性質のために、行が正確に整列しない場合があります-コードが乱雑に見えます.
  • 正規表現は..面白い!

ただし、いくつかの肯定的な点があります確かに、私はそれを少しの間しか使用していませんが、プロポーショナル フォントで少しうまく機能する側面が確かにいくつかあります。

  • 「単語」の方が読みやすい - スペルミス (変数のスペルが間違っているなど) が飛び出します。
  • より長く、より説明的な変数名を使用する方が良いと感じています (おそらく、テキストの横方向のサイズが圧縮されているため、よりスキャンしやすいためです)。
  • このようなコードは少し読みやすいようです。私の脳が各単語を「トークン化」してその意味を理解するのは簡単です. 句読点が読みにくいので、まだ難しいですが、慣れるまで少し時間がかかると、それは変わるかもしれません

明日、この回答をもう一度更新します(このように丸一日を乗り切ることができると仮定します!)

于 2008-10-20T15:06:25.777 に答える
29

関連する条件を並べて、それらがグループ化されていることをより明確にするのが好きです。例えば:

if ((var1 == FOO) && ((var2 == BAR) ||
                      (var2 == FOOBAR)))

可変幅フォントでは、これがさらに難しくなります。

于 2008-10-20T14:30:41.777 に答える
23

ここでよく目にするのは、「コードの整列」とインデントに関する議論です。以下の点を指摘したい。

  • どのフォントでも、8 つのスペースは常に 4 つのスペースの 2 倍の長さになります。
  • どのフォントでも、2 つのタブは常に 1 つのタブの長さの 2 倍になります。
  • ある行の識別子は、次の行では常に同じ幅になります...どのフォントでも!
  • 確かに、チームメイトがモノスペースを使用していて、あなたが使用していない場合、見た目は異なります...しかし、何かに基づいて標準化する必要があります-それが何であれ--それが本当なら、それは誰にとっても同じに見えます. ..任意のフォントで! 笑いのために、全員をモノスペースに保ち、半分をワイドスクリーン モニターにすることもできます...どうなるか見てみましょう。
  • 使用している識別子の範囲ではなく、画面上のそれらの文字の列の位置に基づいてコードを並べることに依存する何かをしている場合、私はあなたがしていることはハックだと思います。識別子は、名前の品質を犠牲にして特定の文字数に制限されるべきではありません。それはさておき...コード内のコメントにアスタリスク付きの ASCII ボックスをまだ描画していませんよね?

したがって、これらすべてをまとめて描画すると、各行を同じ場所で開始し、一貫した間隔が同じ幅であり、識別子が各行の幅を自発的に変更しない場合、コードは実際に整列します! ...何かが違うまで。

例えば:

identifier.Method().Property.ToString();
identifier.Method().OtherGuy.ToString(); //how lined up and pretty!
identifier.Method().Sumthing.YouGetThePoint;
  • identifier.Method().Property.ToString();
  • identifier.Method().OtherGuy.ToString(); //大野!ずれた!
  • identifier.Method().Sumthing.YouGetThePoint; //...しかし、誰が気にしますか? それらは異なるプロパティです!

私が認める 1 つのポイントは、英数字以外の文字は通常、あまり幅が広くないということです。これらには )(][}{,:|";',`! および が含まれます。ただし、これはフォント エディターで修正できます...単に幅を広くするだけです。これは、モノスペース以外に固有の問題ではありません。あまり需要がなかったので、まだ完成していません。

要約すると、個人的な好みは問題ありませんが、非モノスペースよりモノスペースを好む実用的な理由はほとんどないと思います。あなたはそれの外観が好きですか?もちろん、モノスペースで。より多くのものを画面に収めたいですか? 非モノにします。しかし、人々が非モノスペースを異端のように扱う方法は、少し誇張されています。

于 2010-07-30T22:57:55.530 に答える
16

等幅フォントの多くの議論は、微調整するだけで簡単に反論できるため、このスレッドに興味を持ちました。そこで、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);
    

    プロポーショナル フォントでこれを行うことはできません。

全体的にキャラが狭すぎる。繰り返しますが、追加の文字間隔が役立つ場合があり、句読点の場合は間違いなく必要です. しかし、プロポーショナル フォントをより読みやすくするためのこのすべての調整は、等幅フォントを自然にエミュレートするだけだと感じています。確かに、これまでに述べたすべての点に当てはまります。

于 2008-10-20T15:07:11.113 に答える
11

私は Comic Sans MS を使用しています。これは、小さなポイント サイズとしては非常に妥当に見えます (見出しのサイズで「冗談」に見えるだけです)。見た目は簡単ですが、VS のドッキング パネルをいくつか開いた状態で、テキスト ウィンドウに適切な量のコードが表示されるように、テキストを十分に小さく保ちます。

ソリューション エクスプローラー パネルを非表示にしても、水平スクロールなしで 100 列のテキストを読み取ることができます。さらに、DXCore Documentor パネル (フォーマットされた XMLDOC を表示する) を十分に広く開いて読むことができますが、XMLdoc をドキュメント化するのに十分なテキストを表示することもできます。

于 2008-10-20T14:39:58.017 に答える
10

等幅フォントを使用すると、コードの整列がはるかに簡単になります。

これは、チームで作業する場合に特に当てはまります。チームの全員が異なるフォントを使用でき、それらがすべて等幅である限り、すべてが一致します。同様に、1 人の人がさまざまな開発ツールを使用する場合、それらがすべて等幅であれば、すべてが整列します。それらがすべて等幅でない場合は、すべてが同じフォントを使用していることを確認する必要があり、2 つのプラットフォームで開発している場合、それは困難な場合があります。

実際、一部の開発ツールは等幅フォントのみをサポートしています。

もう 1 つの理由は、等幅フォントはより明確な文字を持つ傾向があることです。lIiO0 と を比較するとlIiO0、私の言いたいことがわかるでしょう。また、空白を数えやすくします。

于 2009-10-30T17:04:22.710 に答える
10

チームで作業する場合、等幅フォントを使用すると、コードが明確になり、全員が使用する等幅フォントを好む場合でも、正しくレイアウトされます。

可変幅フォントを使用するとコードが明確に見えるかもしれませんが、等幅フォントのユーザーがコードを開いた場合、同じように見える可能性はほとんどありません。

于 2008-10-20T14:37:02.063 に答える
10

リテラルにスペースが 1 つではなく 2 つあるために検索で何かが見つからない理由を数時間かけて理解しようとするだけで、Monospace フォントを使用する必要があることがわかります。設計者が等幅フォントを使用していないときに、Lotus Notes エージェントを修正しようとしたときに、これが 1 回発生しました。コードを CodeWright に貼り付けて印刷するまで、問題が何であるかは明らかではありませんでした。

于 2008-10-20T16:17:37.880 に答える
7

等幅フォントは、テキストベースの DOS 時代からの持ち越しとして、プログラマーの好みだったのではないかと思います。

一方、私自身、Verdana と他のいくつかの推奨されるプロポーショナル フォントを試しましたが、変更に対処できませんでした。私の目は、モノスペースにはあまりにもよく訓練されています。C/C++、C#、Perl などのような記号を多用する言語は、私にはあまりにも異なって見えます。シンボルの配置によって、コードの外観がまったく異なります。

于 2008-10-20T14:30:53.010 に答える
7

通常の言語ではなくコードの性質上、正しく並べられている方が適切です。また、コード編集では、ブロック選択、ブロック コピー、ブロック ペーストを行いたい場合があります。Visual Studio では、マウスで選択しながら Alt キーを使用してブロックを選択できます。エディターによっては異なる場合がありますが、エディターでのそのオプションは場合によっては非常に重要であり、等幅フォントを使用していない限り、うまく機能しないことが常にわかっています。

于 2008-10-20T14:36:05.667 に答える
5

個人的には、等幅フォントの方がコード エディターで読みやすいと思います。もちろん、私はほとんど盲目です。それは違いを生むかもしれません。現在、consolas フォントを 15 ポイントで実行し、背景を暗くしてコントラストの高い文字を使用しています。

于 2008-10-20T14:30:33.790 に答える
2

1 レベルより深くなると、インデントにスペースを使用すると問題が発生します。

于 2008-10-20T14:30:17.270 に答える
2

ほとんどの場合、位置合わせの目的で使用されます (関数のパラメーター宣言が複数行にまたがっていて、それらを並べたい場合や、コメントを並べたい場合など)。

于 2008-10-20T14:49:48.073 に答える
1

タブ文字の問題と同じように、整列のために何かをインデントしたり、他の誰かが異なる好みを持っている場合が複雑な要因だと思います。物事がずれます。

于 2008-10-20T14:32:16.160 に答える