27

PSR-2標準に従ってファイルをインデントするためにタブの代わりにスペースを使用する客観的な理由はありますか、誰かが提供できますか:

  • 事実、
  • 参照、
  • 特定の専門知識

どのPSR-2規格に基づいていますか?

PSR-2 標準の作成者は、「ルック アンド フィール」以上のもの、単なる意見に基づくもの以上のものを念頭に置いていました。多くの人は、チームワーク中にスペースが優れている理由を理解するのに苦労しています。

受け入れられた回答の説明:

Farsides の回答によると、リポジトリのことは、スペースが PSR-2 にインデント ツールとして説明されている理由の正確なケースである可能性があります。PSR-2 は、チームワークを支援するために開発された標準です。タブを使用している場合、行の先頭にある 1 つの偶発的なスペースは、IDE に表示されず、リポジトリに忍び寄る可能性があります。数人が同じファイルで作業している場合、不必要な競合が発生する可能性が高くなります。タブの代わりにスペースを使用すると、そのような偶発的なスペースを目玉で簡単にキャッチできるようになり、これがおそらくタブの使用が標準になる理由です。

4

3 に答える 3

17

事実:

1. GIT と他のバージョン管理システムでは空白の扱いが異なる

私の経験に基づいて、私たちはプロジェクトに直面しました: GIT や他のバージョン管理システムはinvisible spaces+の扱いTABSが異なり、実際には影響を受けていない行の変更につながります。space誤って追加された+ TAB= インデントが IDE では同じように見えても、GIT ではマージ時に違いが生じるため、気付かないのは簡単です。ソース管理でリビジョンを効果的に比較する能力が損なわれます。これは本当に恐ろしいことです。あなたが持っているspacesだけのときは決して起こりません。

2. 共同作業者の環境 (エディタ、OS、設定など) の違いを中和する

タブの幅 (スペース単位) は環境 (テキスト エディター、OS、設定など) によって異なりますが、スペースの幅はどこでも同じです。IDE は、余白を個人の好みに合わせて処理できるほどスマートですが、コラボレーション用に生成される出力は標準に準拠する必要があります。PSR-2 が述べているように、スペースのみを使用し、スペースとタブを混在させないことで、差分、パッチ、履歴、および注釈に関する問題を回避できます。スペースを使用すると、行間の位置合わせのために細かいサブインデントを簡単に挿入できます。

3.スペースを使用する開発者は、タブを使用する開発者よりも多くのお金を稼ぎます

タブの代わりにスペースを使用すると、給与が 8.6%高くなります。タブの代わりにスペースを使用すると、さらに 2.4 年の経験と同じくらいの給与差が生じます。(出典: Stack Overflow 2017 開発者調査)。

4. コーディング スタイルの重要性に関する多数の研究

プロジェクトのすべての共同作業者がコーディングに関して同じ基準を維持する場合、長期的には良い結果が得られます。共同作業はより効率的で専門的になり、リファクタリングや開発の際も同じインデントになります。それに関する研究:

  1. たとえば、Ben Shneidermanはプログラマーの行動に関する探索的実験でこれを確認しました。

    プログラムステートメントが賢明な順序で配置されている場合、専門家は初心者よりもよくそれらを覚えることができました. ステートメントがシャッフルされると、専門家の優位性が低下しました。

  2. Code Completeで引用されたSoloway と Ehrlichによる 1984 年の古い研究、およびThe Elements of Programming Styleからのサポートされた研究:

    私たちの経験的な結果は、これらの規則に歯を入れます:プログラムが特定のスタイルで書かれるべきであることは、単に美学の問題ではありません。むしろ、従来の方法でプログラムを書くことには心理的な根拠があります。プログラマーは、他のプログラマーがこれらの談話規則に従うことを強く期待しています。ルールに違反すると、プログラマーが時間をかけて築き上げてきた期待によってもたらされる効用が実質的に無効になります。

于 2016-02-26T10:58:40.290 に答える
-1

多くの人は、標準の方がメートル法よりも優れていると考えています。多くまたはほとんどの人が何かを考えているからといって、それがより優れている、または正しいと自動的に意味するわけではありません。

適切な例:タブは明らかにスペースよりも優れています:)

于 2021-10-05T00:24:18.110 に答える