最適なコード幅の研究?


131

選択したIDEで「右マージンの表示」を有効にすると、デフォルトで80文字になる可能性があります。私は、数年前の会社の標準であったことを除いて、それを120に変更する傾向があり、他の会社が別の方法でそれを行うように指示していません。

私の質問は、コードの可読性の最適な最大幅である80文字を実際に示している研究はありますか、またはこの値は単なる「これまでどおり」であり、それがなぜそのようになっているのか本当に誰にもわかりませんか?そして、コード行の幅はコーディング標準の一部である必要がありますか?


1
私はどんな研究も知りませんが、この質問に対する答えとしてたくさんの意見を見つけるでしょう:* この日と年齢でコードファイルに最大80文字の幅を強制する正当な理由はありますか?
アダムベレア

3
私が知っている研究はありませんが、さまざまなプロジェクトのコーディング標準を見るのは興味深いかもしれません。たとえば、Googleは80文字です。(code.google.com/p/google-styleguide)WebKit(ala Apple's?)には制限がありませんAFAIK(webkit.org/coding/coding-style.html)。80(なるようにMozillaの現れdeveloper.mozilla.org/En/Mozilla_Coding_Style_Guide#Line_length
gman

これは、私たちが「官僚」と綴る理由と同じです。だれかがだれかがその時点で意味を成しているかどうかわからない理由で標準を定義したからです。スペルについては、ラテン語に対する疑わしい魅力でした。コードについては、紙のパンチカードのサイズです。次に、1つのメソッドに「正しい」というラベルが付けられました。そして、下級官僚はそれ以来、基準を施行してきました。
調整可能

回答:


116

実際には、80桁のものがDOSに先行しています。これは、80カラムのデバイスであったカードパンチからのものです。

そして、ある種のOPの質問に答えるために、1つの「研究」が約600年間続いています-印刷された本。これらは何世紀にもわたって、読みやすさを第一に考えて、現在のテキストの平均行長が約60文字になる位置に進化しました。読みやすくするために、マージンを狭くしてください。


85
使いやすさの点で、自然言語を読むこととプログラミング言語を読むことを比較できるとは私は信じていません。
Frug

25
@Frug-実際には、おそらくできます。65文字の幅の理由は、大きな行を読み取ることができないからではありませんが、目が次の行に移動すると、弧が狭すぎるためです。あなたはできる行の高さを増やすことで、これを動き回るが、それはそれはIDE内避けるために何かが、おそらくですので、意味を伝えるために間隔使用ブロックに難しくなります。
Jimmy Breck-McKye

32
@ジム-私の自然言語には30文字の単語が含まれていません(とにかく私が使用しているわけではありません)。それは、プログラミング言語とはまったく異なる方法で解析されます。多くの場合、コードの行は、それが長い条件付きであっても、長いメソッドとクラスの組み合わせであっても、他のコード行とは別にグループ化できます。これをインデントと組み合わせると、2つの言語の比較は不合理になります。読みやすさと線の長さを科学的に研究している人なら誰でも、違いを洗い流すことに反対するでしょう。
Frug、

10
@Frug-異論が私の主張にどのように関与しているかは実際にはわかりませんが、インデントが提案しているモデルを壊していることがわかります。でも、私を「ジム」と呼んではいけません。
Jimmy Breck-McKye

17
本は通常、モニターよりも目の近くに配置されます。つまり、読者が首をつぶすことなく本を読むことができる場合、1行あたりの文字数は少なくなります。画面は通常、本の距離に配置されません。つまり、最大の目の角度の制限内に保ちながら、1行あたりの文字数を増やすことができます。また、コードは十分に読まれていないため、この幅はそれほど重要ではありません。I(YMMV)は、容易に120文字で行従うことができますコードを私のラップトップ画面に、これは私の15"ラップトップ上の2つのEmacsバッファ、悲しいかなために広すぎる。
Obscaenvs

104

後でソフトウェアを保守し、80文字の制限に固執する必要のあるプログラマーを憐れんでください。

80を選ぶ理由:

  • ラップトップで大きなフォントで読むことができます

  • 比較のために2つのバージョンを並べて配置するためのスペースを残す

  • IDEのナビゲーションビュー用のスペースを残します

  • 任意に改行せずに印刷します(電子メール、Webページなどにも適用されます)

  • 1行で複雑さを制限

  • インデントを制限し、メソッド/関数の複雑さを制限します

はい、それはコーディング標準の一部であるべきです。


10
これらは、行幅を80文字以下に保つ大きな理由です。明らかに考え抜かれているあなたの答えがそれ以上のポイントを獲得しなかったことに私は本当に驚きました(失望しました)。このリストに追加します。(1)水平スクロールは面白くありません。(2)複数の列でそのコードを表示することにより、作業中のコードの密度を大幅に高めることができます。他のほとんどの線がそうでなくても、右に遠くに伸びる数本の線がある場合、多くの不動産が無駄になります。
ドニーキャメロン

4
わかりましたが、インデントの少ないコードのブロックがあるとどうなりますか?私にはそれが起こっており、80人のキャラクターはまったく楽しくありません。
EKanadily

14
Limits the complexity in one line複雑さを複数の行に分散する方が良い理由はわかりません。それはあなたのメンタルスタックにさらにプッシュします。
ジョナサン

4
これは非常に古いトピックです。しかし、今でも多くの開発者が27インチのモニターを使用することに同意しますか:-)。つまり、視力が問題になる場合は、より大きな画面が役立ちます。8年前、私たちはまだ17インチまたは20インチのモニターに取り組んでおり、一部は4:3解像度にも取り組んでいました。
Mathijs Segers 2017年

1
@MathijsSegersは、モニターのサイズや解像度に関係なく、視野の中央30度以内にテキストを置く方がより快適です。サイドバイサイドモニターで複数のウィンドウを開いて作業するとき、私は頭を回して一方から他方に目を向ける傾向があります。行の端から端まで読むために頭を回したり、目を完全に回転させたりする必要はありません。あまりにも多くの急速な目や頭の回転は、一日中行われた場合、おそらくめまいを引き起こすでしょう。
モーリス

41

勉強はしていませんが、私の経験を紹介します。

テキストを処理するとき、水平スクロールが面倒であることがわかりました。コードが使用される環境を調べ、そのコンテキストに基づいて幅の標準を設定します。

たとえば、XWindowsのEmacsで作業していたとき、常に2つのEmacsウィンドウが並んでいるとうまくいきました。これで80文字に制限されたため、これが私の最大行長でした。

ある時点で、私は1920x1200画面のVisual Studioで作業しました。すべてのツールウィンドウを片側にドッキングして、最大化します。約100文字で、2つのエディタウィンドウを並べて表示するのに十分なスペースがありました。

また、最長の行は、長いパラメーターリストを使用したメソッド呼び出しからのものであることがわかりました。これはコードの匂いになることがあります。おそらくメソッドをリファクタリングする必要があります。

あなたとあなたの同僚が高解像度の画面と鋭い視力を持っているなら、必ず小さなフォントと長い行を使用してください。逆に、短い行が必要になる場合があります。


1
プラス1つは「鋭い目」のためのものでした。なぜなら、それが本当に私に起こったことだからです。
EKanadily 2015

26

会社が別段の記載がない限り、私は通常120-150を使用します。ただし、コードの種類にも依存します。

  • (ほとんど)1行で複数のステートメントを使用することはない
  • 長い行(> 12)を使用するのは、見た目が似ている行が整列していて切れない場合のみです。
  • 私はいつも十分なスペース/括弧などを使います
  • 短い名前よりも長い変数名を好む

数年前までは100に制限していましたが、現在はワイドスクリーンが通常使用されており、高解像度モニター120はラップトップ(ほとんど使用していません)でも見ることができます。

ブックには縦方向のスペースが多く、スクリーンには横方向のスペースがあるため、スクリーンと本の比較はあまり良くありません。私は常に機能を最大に保つようにしています。1つの目に見える画面。


6
複数のウィンドウを並べて開いている場合、1行あたり120〜150文字はどのように機能しますか?多くのコードエディターウィンドウを横に開いたままにしていますか?—私の30インチモニターでは、行を97文字/行に制限すると、3つのウィンドウを並べて表示できます。
KajMagnus

1
私は大きなディスプレイでコードを書いています。110〜130を目指します。私の主な目標の1つは読みやすさであり、ステートメントを2〜3行に分割すると、私の意見では読みにくくなることがあります。また、コメント、無効なコード、ハードコードされた値など、表示したくない迷惑メールを非表示にするために500〜1000にアクセスすることもあります。プログラマにも依存すると思います。ほとんどのコーダーが80で動作する場合、共有コードで作業するときにそれを目指すのが最善です。
サンセットクエスト2015

10

たぶん80文字は、これらの悪いゲッターチェーンを回避するための良い点でもあります。

object.getFoo().getBar().getFooBar().get ...

80文字に制限すると、誰かがこれらの変数をローカライズしてnullチェックなどを行うかもしれませんが、ほとんどのプログラマーはそれらを次の行に折り返すようにします。知りません

それに加えて、スターブルーが言及したように80文字は素晴らしいです。これは間違いなくコーディング標準に入るはずです。


5
参考までに、このような過度のメソッドチェーンは、トレインレックアンチパターンとして知られています
Dennis

4

ハードウェアの制限、およびコードと自然言語の読み方の違いを無視すると、行を約80文字に制限する3つの主な理由がわかります。

  1. 人間の眼球は丸く、実際には狭くも広くもありません。解像度のほとんどは中央にあります。一度に何時間も読む場合は、必要に応じて1つのスクロールバーを使用して、短い弧で目をスイープする方がはるかに快適です。コードの読みやすさに固有の正式な調査については知りませんが、自分の観察によると、モニターが2フィート離れており、テキストのサイズが10ptの等幅フォントであり、100文字で水平フィールドの約1/3を占めています。視力、または約60度(すべての目の解像度がである30度の範囲外)。
  2. ほとんどの人は仕事で大きなモニターを使用しているため、前後にクリックしなくても複数のものを見ることができます。
  3. 短い行ほど複雑さが少なくなるため、開発者はコードをよりわかりやすい単位に分割する必要があります。

3

私はどこかで読んだことをはっきりと覚えています(アジャイルドキュメンテーションにあったと思います)最適な読みやすさのために、ドキュメントの幅は約2つのアルファベット、または60-70文字であるべきです。古いターミナルの線幅は、その古い活版印刷の規則に一部起因していると思います。


3

右余白オプションは、コードを印刷する場合にページの幅を表示することを目的としており、以前に投稿されていたように、80に設定されていたため、GUIの前までは行の長さがずっと前にあったため、パンチまで戻りました。カード。

最近、いくつかのブログ(IDEのフォントサイズを大きくすることはできません)で、コードの品質を向上させるためにIDEフォントサイズを増やすことを推奨しています。その背後にあるロジックは、画面に表示されるコードが少ない場合、短い行を記述し、シャワー機能。

私の意見では、短い行はコードの読み取りとデバッグを容易にするので、行を短くするようにしています。制限を設定して自分でより良いコードを作成する必要がある場合は、機能するものを選択してください。長い行は、ワイドスクリーンでのみページサイズとコードを増やしてもかまいません。


1

一部の人々が他の回答で指摘しているように、80文字の制限の理由は、部分的に歴史的(パンチカード、小さな画面、プリンターなど)であり、部分的に生物学的(あなたがどの行にいるかを追跡するために、全体を見ることができるのは一般的に良いことです)頭を回す必要がないライン)。

とは言っても、私たちはまだ人間であり、私たち自身の限界を解決するためのツールを構築していることを忘れないでください。文字制限に関する議論全体を無視し、長さに関係なく意味のあるものを書くだけで、行を適切に追跡できるIDEまたはテキストエディターを使用することをお勧めします。タブとスペースの議論のインデントに同じ引数を使用し、インデントの幅をどの程度にするかを提案します。インデントマーカー(最も一般的にはタブ)を使用して、独自のIDEまたはテキストエディターを構成して表示するように提案します。彼らが彼らに最も快適であると思うとき。

1行あたりの文字数が固定されていると、対象となる視聴者以外の全員にとって常に事態が悪化します。とはいえ、コードを共有することは決してないでしょう。そのため、このディスカッションを開始する理由さえまったくありません。コードを共有したい場合は、自分(または他の人)の理想を彼らに強制するのではなく、人々が自分で何を望むかを決定させるべきでしょう。


0

私の知る限りでは、80文字はコマンドラインエディタとの互換性を維持するためのコーディング標準として使用されています(デフォルトの端末幅は通常80文字です)。最新のIDEと大きな画面解像度では、80文字はおそらく「最適」ではありませんが、多くの開発者にとって、ターミナルでの読みやすさを維持することは不可欠です。そのため、80文字幅がコード幅のデファクトスタンダードとしてすぐに置き換えられる可能性はほとんどありません。そして、最後の質問に答えるには、はい、コード幅と、コードの可読性に影響を与えるその他の特性は、コーディング標準で対処する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.