たぶん私はこれだけですが、タブではなくスペースを使ってインデントする人を困らせることはほとんどありません。タイピングはタイピングSpaceSpaceSpaceSpaceよりも簡単で直感的Tabですか?確かに、タブの幅は可変ですが、スペースよりもインデントスペースの方がはるかにわかりやすくなっています。同じことがバックスペースにも当てはまります。1回または4回バックスペースしますか?
Pythonのような言語でタブの上にスペースを使用することが推奨されるのはなぜですか?
たぶん私はこれだけですが、タブではなくスペースを使ってインデントする人を困らせることはほとんどありません。タイピングはタイピングSpaceSpaceSpaceSpaceよりも簡単で直感的Tabですか?確かに、タブの幅は可変ですが、スペースよりもインデントスペースの方がはるかにわかりやすくなっています。同じことがバックスペースにも当てはまります。1回または4回バックスペースしますか?
Pythonのような言語でタブの上にスペースを使用することが推奨されるのはなぜですか?
回答:
主に一貫性。
また、Pythonのように、実際に空白を実際に使用するものも時々発生します。次のコードスニペットを実行するとどうなるでしょうか。
def foo():
print "a"
print "b"
回答:これら2つの印刷ステートメントは同じレベルでインデントされていないため、同じコードブロックの一部ではないため、IndentationErrorが返されます。(1つ目はタブを使用し、2つ目はすべてスペースを使用します)
次に、1つの開発者のエディターのタブが8スペースに設定され、別の開発者が4に設定され、誰かが奇妙な理由で5を使用しているという苛立たしいケースがあります... SVNと他の誰かが更新すると、恐ろしい、恐ろしい混乱が表示されます。
つまり、スペースであろうとタブであろうと、これらは常に一貫している2つの本当に良い理由です。
ただし、スペースを使用すると、タブよりもインデントをはるかに制御でき、エディターを機能させるためにエディターで特別な構成を行う必要はありません。(たとえば、vimでは、set expandtab
タブを押すたびにスペースを挿入するのに使用するだけで簡単にできます)
編集:そして面白いことに、サイトは私のブラウザを正しく表示できるように私のタブをスペースに正規化しているようです。「編集」をクリックすると、元のタブが含まれます。;)
これは、Pythonのインデントと空白についての良い議論です。記事から:
タブのセマンティクスはコンピューターの世界ではあまり明確に定義されておらず、システムやエディターの種類によってまったく異なる形で表示される可能性があるため、タブをすべて回避することはお勧めできません。また、コピーと貼り付けの操作中、またはソースコードの一部がWebページやその他の種類のマークアップコードに挿入されたときに、タブが破壊されたり、誤って変換されたりすることがよくあります。
スペースバーまたはバックスペースキーを2回以上押すことについてのあなたの議論については、ほとんどのソースコードエディターは、タブキーを1回押すだけで設定可能な数のスペースを挿入し、同様にインデントを解除するため、押したときにキーがなくなるインデントにスペースを使用します。
IDEで表示している場合でもless
、メモ帳で表示している場合でも、コードは常に同じ量のインデントで表示されるため、私自身はスペースを使用します。つまり、スペースはよりポータブルです。
Pythonでは、インデントがプログラムフローを制御するため、重要です。
タブでフォーマットされたコードを取得してコピーすると、タブが変更されたり失われたりして、コードの構造が破壊されます。スペースは常にスペースです=より安全です。
スペースバーの摩耗が気になる場合は、エディタがタブを自動的にスペースに変換するように設定されている可能性があります。
.vimrc
してくれませんか:)
set softtabstop=4
であり、TABとBACKSPACEの両方が4つのスペースをタブとして使用します。(まあ、それぞれのタブ
タブだけでは多くのスタイルに対して十分な柔軟性がないため、スペースを常に使用する必要があり、タブとスペースを(ほぼ)混在させると常に絶対的な混乱が生じます。
一般的にスペースを必要とする 1つのスタイルの例として、次のようなものを検討してください。
call_some_function(parameter1,
parameter2,
parameter3,
parameter4,
parameter5,
parameter6,
parameter7);
すべての関数の名前をタブサイズの正確な倍数(括弧のマイナス1)に変更するつもりがない限り、タブだけでこれを行うことはできません。
タブとスペースの混在に関しては、ほとんどすぐに深刻な問題に遭遇します。タブが常に同じように展開されているわけではありません。一部のソフトウェアは、タブを特定の数のスペースに相当するものとして扱います。他のソフトウェアは、特定の数のスペースを法としてタブを拡張します-たとえば、タブの後の項目は常に(たとえば)8の倍数である列番号から始まります。
スペースがタブと混ざらないようにすることができたとしても、問題は依然としてあります。タブも可変幅フォントでうまく機能しません。この問題は、(たとえば)末尾のコメントを揃えたい場合に発生します。
a.m = 9; // this is the slope
a.i = 4; // this is the intensity
a.x = 1; // this is the x-intercept
彼らは今立っているので、それらはすべて完璧に並んでいます。ただし、可変幅フォントで表示すると、見苦しくなります。スペースがあると、コメントの位置が少しずれる場合があります(多くの場合)。ただし、タブを使用すると、ミスアラインメントが非常に急増することがよくあります。
a.m = 9; // this is the slope
a.i = 4; // this is the intensity
a.x = 1; // this is the x-intercept
突然、可変幅フォントの「i」と「m」または「x」の幅の小さな違いが、タブストップ全体に拡大されました。
肝心な点は、タブを使ってコードを表示する方法のほとんどすべての変更は、取るに足らないように見えても、読み取り不能な混乱を引き起こす可能性があることです。
他の質問に答えるために:他の人がすでに指摘していますが、スペースバーを使用して実際にスペースを挿入するプログラミングエディター(または他の多くのこと)の誰も想像できないので、「タイピングspacespacespacespace」に関する質問はとにかく誰もそれをしないので無関係です。同様にバックスペーシングの場合:BkSpc前のタブストップに移動するために4回押す必要があるエディターを想像するのは難しいので、(ここでも)質問は関係ありません。
ボトムライン:あなた(とのみあなたが)するかどうかのタブが細かいです今まであなたのコードを見て、あなただけの今までにあなたがいることを、単一のエディタでそれを行うことはありません、しかし、とても近くに不可能にする(!すべてで)これらの条件の再設定をしています合理的な答えが1つしかないことを強制します。決してタブを使用しないでください。
大きな問題は、「タブ」の幅の不整合であり、4つのスペース、8つのスペースとしてレンダリングされることがあります。多くのエディターでは、1〜9のスペースに設定できます。
したがって、これは単純なWYSWYGエディターを、他の誰かが得たものと同じものに変えます。
これはPythonに特有の問題ですが、インデントが人間の読者に意味を伝えるために使用され、めちゃくちゃにされたタブによってコードが読みにくくなるため、「中括弧」言語のいずれにも問題があります。
tab
。それをお気に入りのエディターで構成できない場合は、より優れたエディターが必要です。