web-dev-qa-db-ja.com

IDEで等幅フォントを使用する理由

SOでいくつかのフォントトピックを見てきましたが、大部分の人々はプログラミングタスクに固定幅フォントを使用しているようです。読みやすさの向上。モノスペースに関連するものを見逃すことはありません。

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

74
Rik

等幅フォントの場合:

  • 等しい長さの文字列リテラルは等しく見えます。
  • 次のような細い句読点が見やすくなります:(){}
  • 類似の文字はより異なって見えます:Il 0O vs Il 0O
  • 行がX文字幅のウィンドウで折り返されるかどうかを知っています。これは、チームが100文字の行で標準化でき、行が常に行のように見えることを意味します
100
Ryan

プロポーショナルフォントでコーディングすることを考えたことがありません。そのため、科学のために、編集者を切り替えて試してみました。

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

  • コードは非常に密集しているようです。私のコードの大部分は80列前後で、めったに100を超えることはありません。プロポーショナルフォントを使用すると、エディターの左側にある小さなストリップになります。画面スペースが短い場合は便利かもしれませんが、不必要にコンパクトに見えます。
  • コードの「テクスチャ」は失われます。私がどのような構造を見ているのかを知るのは難しいです-それは、文字ごとにほとんど読む必要がある単なるテキストのスラブです。
  • veryif (!foo)の_!_演算子を見逃すのは簡単です。 ((!foo)の場合、参照してください!)
  • 句読点の定義は非常に不適切です。多くは区別するのが難しいです({}[]() vs {} []())
  • 一部の句読点文字は他の句読点文字よりもはるかに大きく、意図されていない部分を強調します(_$@%_ vs $ @%)
  • 一部の文字はvery狭く、非常に識別しにくい(_'"!;:,._ vs '"!;:、。)
  • いくつかの数字と文字は非常に似ています(_0Oo iIl_ vs 0Oo iIl)
  • 私はextremely構文の強調表示に依存していますが、引用符が均衡していることを確認するなどのことはほとんど不可能です.
  • 位置合わせ(単純なインデントを除く)は完全に壊れています。余分なスペースを入れることで並べ替えることができますが、フォントの比例的な性質のため、行が正確に整列しない場合があります-コードはメシエに見える
  • 正規表現は興味深いものです!

ただし、areいくつかのプラスのポイントがあります。確かに私はほんの少しの間それを使用していましたが、プロポーショナルフォントで少し良く機能するいくつかの側面が確かにあります:

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

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

100
Dan

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

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

可変幅フォントはこれをより困難にします。

28
DGentry

ここで私が見続けることの1つは、「コードの整列」とインデントの議論です。次のことを指摘したいと思います。

  • 8つのスペースは、常にフォントの4つのスペースの2倍の長さになります。
  • 2つのタブは、常にフォントの1つのタブの2倍の長さになります。
  • 1行の識別子は、次の行で常に同じ幅になります...どのフォントでも!
  • 確かに、チームメイトがモノスペースを使用している場合とそうでない場合は、見た目が異なります...しかし、何かを標準化する必要があります-それが何であれ、それが真実であれば、誰にとっても同じように見えます。 ..任意のフォントで!笑いをかけるには、全員を固定幅に保ち、その半分をワイドスクリーンモニターにしてみてください。
  • あなたが使用している識別子の範囲ではなく、画面上のそれらの文字の列状の位置に基づいてコードを並べることに依存していることをしているなら、あなたがしていることはハックだと思います。識別子は、名前の質を犠牲にして、特定の文字数に制限されることはありません。それ以外に...あなたはまだあなたのコード内のコメントにアスタリスクが付いた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つのポイントは、英数字以外の文字は通常それほど広くないということです。これらには)(] [} {,: | "; '、`!および。が含まれます。ただし、これはフォントエディタで修正することができます...単に幅を広くすることで解決できます。非固定スペースに固有の問題ではありません。それに対する多くの需要はなかったので、まだ行われていません。

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

18
bwerks

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

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

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

16
Konrad Rudolph

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

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

11
James Curran

チームで作業する場合、モノスペースフォントを使用することで、使用するモノスペースフォントに関係なく、コードが明確になり、すべてのユーザーに対して正しくレイアウトされるようになります。

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

10
Tom Robinson

モノスペースフォントを使用する必要があることを認識するために、リテラルに1つではなく2つのスペースがあるため、検索で何かが見つからない理由を理解しようとするのに数時間かかります。 Lotus Notesエージェントを修正しようとしたとき、デザイナーが固定幅フォントを使用していなかったときに、これが一度起こりました。コードをCodeWrightに貼り付けて印刷するまで、問題が何であるかが明らかでした。

10
bruceatk

等幅フォントを使用すると、コードを簡単に整列できます。

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

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

別の理由は、等幅フォントはより明確な文字を持つ傾向があることです。 lIiO0とlIiO0を比較すると、私が言っていることがわかります。また、空白のカウントがはるかに簡単になります。

10
SLaks

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

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

6
spoulson

通常の言語ではなくコードの性質上、正しく整列させる方が適切です。また、コードの編集では、選択、ブロックのコピー、および貼り付けをブロックしたい場合があります。 Visual Studioでは、マウスの選択中にAltキーを使用してブロックを選択できます。エディターによって異なる場合がありますが、エディターのそのオプションは常に非常に重要な場合があり、等幅フォントを使用している場合を除き、うまく機能しません。

6
stephenbayer

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

5
John Kraft

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

2
jammus

主に位置合わせの目的(関数パラメーター宣言が複数の行にまたがってそれらを並べたいとき、コメントを並べるときなど)。

2
mipadi

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

1
Alan Hensel