drupal.orgでホストされているコードのコーディング標準では、2つのスペースを使用してコードをインデントすることを推奨しています。他のサイトでは、タブを使用してコードをインデントすることを推奨しています。
あらゆる状況、あらゆる状況で適切なインデント文字は何ですか?答えを説明してください。
drupal.orgでホストされているコードのコーディング標準では、2つのスペースを使用してコードをインデントすることを推奨しています。他のサイトでは、タブを使用してコードをインデントすることを推奨しています。
あらゆる状況、あらゆる状況で適切なインデント文字は何ですか?答えを説明してください。
回答:
スペース
タブは、環境に応じて異なる列数にすることができますが、スペースは常に1列です。
インデントを構成するスペース(またはタブ)の数に関しては、特定のタブストップ値を使用するよりも、コード全体で一貫性を保つことが重要です。
タブ
もちろん、一貫性はどちらよりも重要であり、優れたIDEによって違いは無視できます。そうは言っても、このスレッドのポイントは聖戦であることです。
私はタブを好む:
タブを使用して行の先頭をインデントし、インデントレベルごとに1つのタブをインデントします。そして、誰もがその幅を選択できるようにします。
あなたは文字を並べている場合は、スペースを使用してください内のラインなので、彼らは関係なく、常にタブサイズのラインアップ。
そして、そもそもこの愚かなことを問題にした初期のソフトウェア作者をすべて見つけてパンチしてください。
(まじめな話、なぜこれも議論されているのでしょうか?次に、改行にも複数の文字を使用したいことを教えてくれます!)
タブ
タブがまったく役に立たない場合はスペースを使用する必要があります。
パラメータとコメントを揃える場合でも、タブの機能は向上します。
タブに関するすべての議論は理論上素晴らしいです。しかし...
理論的には、実践と理論は同じです。実際にはそうではありません。
はい、タブを使用してインデントレベルを決定できます。そして、はい、タブとスペースの組み合わせを使用して物事を整列させることができます。そして理想的な世界では
実際には、スペースとタブの違いを見ることができません。コードを移動すると、それらは常に混同されるように見えます。また、タブが8列に設定されている別のプログラムでコードを表示するのは面倒です。
以前はタブを使用していました。その後、チームの一員として働き、コードを共有し始めました。私はすぐにスペースの支持者になりました。したがって、タブのユートピアに同情することはできますが、スペースを使用しないことは想像できません。
public:
、C ++クラス宣言などで半角インデントを使用して、きれいに見えるようにできます(特にネストされたクラスの場合)。
興味深いかもしれないいくつかの関連意見:
勝利のためのタブ。
絶対に。嫌い。4.スペース。
どうして?主に、キーボードでコードをナビゲートするのにうんざりしており、left
left
left
left
1つのインデントを超えるために絶えずヒットする必要があるためです。これは、初期バージョンのNotepad ++から生まれたものであり、フォーマットボタンのようなものがなかった単純なWindowsのメモ帳でさえ生まれました。とりわけ4を他のどこでも使用したときに、人々が3だけを使用する場合、非常に多くの問題がありました。
もう1つの理由は、タブ文字がインデント専用に存在し、後にナビゲーションにのみ採用されたことです。space
space
space
space
単純なものtab
がうまくいくのに、なぜやっているのですか?単純なタブと設定オプションが機能する場合、IDEが2〜5の間隔のコードを処理し、正しくフォーマットする必要があるのはなぜですか?
残念ながら私は少数派です。
w
、and b
(またはe
and ge
)を使用する必要があります。P
各開発者はタブごとのインデントの量を制御できるため、個人的にすべてでタブを使用するのが好きです。これにより、表示の柔軟性が得られます。
そうは言っても、私は通常、ファイルのコーディングスタイルを最初から模倣します(メンテナンス作業に多くの時間を費やしているため)。
適切なインデント(少なくともマイナーな戦争がなければ)があるとは思いません。
個人的には4つのスペースが好きです。それらは私がコードをより速く読むことを可能にし、すべてのエディターで同じように見えます-Viでさえ。
softtabstop
オプションretab
とretab!
コマンドもあります。
スペース、コメントをコード、関数パラメーターリスト、複雑な複数行の式、またはその性質のものの右側に揃える場合、美しい作品を誰にでも見せたいからです。タブを使用して、人々がタブストップを異なる方法で設定できるようにすると、コードのインデントの最も単純な場合を除き、すべてのタブストップがアラインメントを壊します。
さらに、世界中のすべての人がvimを使用する必要があることは明白です。これにより、スペースでインデントされたファイルであっても、インデント、インデント解除、および「タブストップ」のナビゲートが簡単になります。
タブはインデントに使用される定義により、自然で正統的な選択です。
残念ながら、タブは不均一に実装されているため、現実世界での唯一のソリューションは4つのスペースです。
なぜこれを実装できないのですか:
全員が自分の「自分の」フォーマットを見て、幸せです
それはとても難しいですか?
indent
プログラムを使用するために、すでにRCSまたはCVSをセットアップできます。
スペースまたはタブ-Atwoodが本当に言っていることは、1つを選んでプロジェクト内で一貫性を保つことです。コードフォーマットの唯一の聖杯は、その一貫性を確保することです。そうすることで、あなたのコードを維持しているサイコパスが永続的に状況を改善することを余儀なくされることはありません。
とはいえ、Pythonを使用している場合、または空白が実際のプログラミング構造である他の言語で作業している場合、タブの使用は想像できません。
私は4スペースの種類の男です。タブは一貫していません。
どうやらDelphiでタブがめちゃくちゃになるので、Delphiではタブを使用しません。
ただし、Emacsを使用して他のすべてを実行し、常にタブを使用します。これは、タブが目的の場所に正確に移動するためです。
答えは、すべての状況で単一の適切なインデント文字はあり得ないということです。文字を使用した書式設定には柔軟性がなく、チーム内で異なるスタイルが使用されると競合が発生する可能性があります。
コードをさまざまな書式設定スタイルで完璧かつ柔軟に書式設定する唯一の方法は、仮想的に、つまりインデント文字なしでそれを行うことです。これをサポートしている唯一のコードエディターは、以下のサンプルで使用されているものです。
仮想フォーマットを示すために、以下のスクリーンショットは、このインデント方法を使用するXSLTエディター*からのものです(こちらにも短いビデオがあります)。XSLT内のすべての文字は、説明のために黄色で強調表示されており、コンテンツ内のタブ文字またはスペース文字のみがはっきりと見えるようになっています。コードのインデントは、左マージン(白い背景)を調整するエディターのレンダリングシステムによって処理されます。
Books行の前にある唯一の先行スペース文字は、コードではなくリテラルテキストコンテンツであるため、これらのスペース文字は保持する必要があります。
仮想フォーマットでは、ソースファイルの文字に影響を与えることなく、環境とインデントスタイルに合わせてインデント幅を選択します。以下に示すように、コードのフラットビューが必要な場合は、インデント幅を0に設定することもできます。
これをスペース文字フォーマットと比較するために、仮想フォーマットなしでエディターで開かれた同じXSLTは、そのエディターの自動フォーマッターによって次のように変換されます。
上のスクリーンショットの大きな空白の黄色のブロックは、従来のエディターのフォーマッターによって追加されたスペース文字を明確に示しています。残念ながら、これらは実際のコンテンツと区別できないため、この問題を修正するにはXSLTを変更する必要があります。
概要
XSLTはおそらく極端なケースですが、この原則は多くのプログラミング言語に当てはまります。コンテンツには文字を使用し、フォーマットに関しては代替方法を探します。
**開示:仮想フォーマットを備えたXSLT Editorは、私自身の会社によって開発されました*
今まで言及されていません:インデントが重要な言語(Python、Haskell)があります。ただし、スペースでもタブでも、1文字は1文字としてカウントされるため、コンパイラーが表示するインデントは、タブを使用する場合に画面に表示されるインデントとは異なる場合があります。
したがって、Haskellのような言語では、スペースは必須です。Makefileでは、TABSは必須です。他のすべてでは、それは個人的な好みの問題であり、今日では大したことではありません-すべてのまともなエディターには、「(リード)スペースからタブへ」および「(リーディング)スペースからタブ」コマンドがあります。
すでに多くの議論がなされていますが、将来、私たちがどこに向かうことができるかについては誰も言及しませんでした。
タブもスペースもありません!
理想的には、コードはデータと見なされ、特定のテキスト形式で保存されるべきではありません。開発者は誰でも自分の好みのビューを適用できます。さらに、このビューはテキストだけに限定されるべきではなく、テーブル、カラーピッカー、数式を含めることができます。
この考えはあまりにも大げさではありません。JetBrainの言語指向プログラミングエディタであるMeta Programming System(MPS)が、これが議論全体を解決し、同時に多くの追加の可能性を同時に実現することを最初に実感させたのです。(はい、これはエディタープラグインで可能ですが、MPSがとるアプローチとは対照的に、テキストでの作業は多くの不必要な複雑さを直接追加します。)
タブやスペースとは対照的に、抽象構文ツリーで直接作業する場合に言及できる欠点はほとんどありません。必要なのは、技術が商業的に実行可能な製品に成熟することだけです。この最初の兆候が現れています。Realaxyは、主に市販のアクションスクリプトエディターであるMPSに基づいて作成されました。
大手企業の1社がこのテクノロジーの概念に飛びついて、何が起こるかを見てみたいです!
どちらも良くも悪くもありません。唯一の重要なことは、一貫性を保つことです。
あなたが1つのチームである場合、あなたが個人的に好きなものを選んでください。お気に入りのエディターのデフォルトの動作を検討しますが、好きなものを選択してください。
チームに所属している場合は、チームが行うことを実行します。期間。
さまざまな仕事で、2つのスペース、4つのスペース、8つのスペース、タブ、スペースとタブを使用しましたが、1つのスペースも使用した可能性があります。エディターに何をすべきかを教えたら、それについてはもう考えません。エディターが詳細を決定します。
他の唯一のことは、スマートエディターを選択することです。Emacsまたはvi?今それは私が戦うことをいとわない聖戦です:-)