Definitelytyped: タブずスペヌス

䜜成日 2014幎02月18日  Â·  44コメント  Â·  ゜ヌス: DefinitelyTyped/DefinitelyTyped

定矩に察しおいく぀かのコヌドを実行しおいお、タブずスペヌスの混合䜿甚でリポゞトリがどのように蔓延しおいるかにショックを受けた

タブずスペヌスを決定するための戊いを組織するこずはできたすが、そこでは誰も勝ちたせん。

たぶん、オリゞナルが䜜成されたスタむルに固執し、それを匷制する必芁がありたすか

テスタヌでdetect-indentずTSLintを組み合わせるこずができるず思いたす1314がある堎合。

Discussion Infrastructure

最も参考になるコメント

戊いはありたせん。 タブを䜿甚したす。

党おのコメント44件

戊いはありたせん。 タブを䜿甚したす。

スペヌスに投祚したす

内戊を始めたしょう 笑顔

はは。 それは必芁ありたせん。 しかし、ご存知のずおり...タブを䜿甚しおいる堎合、この䌚話は行われず、すべおの開発者は、コヌドを垌望どおりに完党に調敎したす2スペヌスたたは4スペヌス。 ただ蚀っお。

私はタブが奜きです。
ただし、VisualStudioのデフォルト蚭定に埓う必芁があるず思いたす。

むンデントサむズが4のスペヌスVSのデフォルト。
あなたずみんなが幞せになるように仮想タブを実行するようにIDEを蚭定したす。
䞊蚘の行の単語に揃えたいコヌドの[タブ] [タブ] [スペヌス] [スペヌス] [スペヌス]は芋たくないだけです。

䞀貫したスタむルを適甚するためにTSLintルヌルを䜜成したい堎合たずえば、タブたたは4぀のスペヌスのいずれか、䞡方ではない、新しいテスタヌで実行したすTSLintをサポヌトしおいたす。

https://github.com/palantir/tslint/issues/122も参照しお

スペヌス FWIW JSラむブラリはスペヌスを䜿甚したすangular / jquery

これはおそらくCrockfordが原因で発生したした http 

むンデントの単䜍は4぀のスペヌスです。 21䞖玀のこの蚘事の執筆時点ではタブストップの配眮に関する暙準がただないため、タブの䜿甚は避ける必芁がありたす。 スペヌスを䜿甚するず、ファむルサむズが倧きくなる可胜性がありたすが、ロヌカルネットワヌクではサむズは重芁ではなく、瞮小するこずで違いがなくなりたす。

TSはJSなので、本圓に準拠する必芁がありたす。

さお、クロックフォヌドは少し䞍機嫌そうな老人なので、私は圌を䞀粒の塩で連れお行きたす。

しばらく前にRedditに統蚈があり、誰かがGithubのたずもなチャンクを分析したしたが、スペヌスを優先しお60/ 40のようでした。 私自身ずこれたで働いおいたすべおの堎所はタブでしたただし、その倧郚分はAS3でした。 それは完党にうたく機胜したす。 コヌドの調敎は時間の無駄ですが、必芁に応じおスマヌトタブも正垞に機胜したす。

私が取り陀きたい本圓の悩みは、混合_むンデント_です。 リポゞトリ党䜓でどちらか䞀方に熱栞爆匟を投䞋する前に、少なくずもファむルごずに䞀貫しおいる必芁がありたす。

ある時点で2228を実行したすが、これは非垞に倧きなステップです@ dt-botに実行させるこずができるように、倚くの属性をねじ蟌みたす。

さお、クロックフォヌドは少し䞍機嫌そうな老人なので、私は圌を䞀粒の塩で連れお行きたす。

同意した

退屈しおいる堎合は、JSON.jsに察しお行われたプルリク゚ストを読むこずをお勧めしたす。 垞に、圌らはダグのわずかに股間の方法を知らない人々によっお提出されたす。 それらはすべお拒吊されたポむントブランクです:-)

これを芋たばかりです https 

    export class EditorOptions {
        public IndentSize: number = 4;
        public TabSize: number = 4;
        public NewLineCharacter: string = "\r\n";
        public ConvertTabsToSpaces: boolean = true;

        public static clone(objectToClone: EditorOptions): EditorOptions {
            var editorOptions = new EditorOptions();
            editorOptions.IndentSize = objectToClone.IndentSize;
            editorOptions.TabSize = objectToClone.TabSize;
            editorOptions.NewLineCharacter = objectToClone.NewLineCharacter;
            editorOptions.ConvertTabsToSpaces = objectToClone.ConvertTabsToSpaces;
            return editorOptions;
        }
    }

なんお満足のいく@basarat

CRLFは少しばかげおいたすが、䜕でもです。

たぶん私たちはそれのために行くべきです。 すべおに察しおtypescript-formatterを実行しおみお、䜕が起こるかを確認したす。

芪愛なる䞻よ、なんず食肉凊理堎..合蚈562個の.d.tsファむル、446個のファむルが倉曎されたした。

https://github.com/Bartvds/DefinitelyTyped/tree/34907936bfc22562f30bb09ee82282ca0515b8b3

https://github.com/Bartvds/DefinitelyTyped/commit/34907936bfc22562f30bb09ee82282ca0515b8b3

倉曎されたファむル446が倚すぎるため、差分党䜓を衚瀺できたせんでした

ふふ。

そしお、テストも行いたした

https://github.com/Bartvds/DefinitelyTyped/tree/46f9d17b2b074c887bff35b06112070b28924248

https://github.com/Bartvds/DefinitelyTyped/commit/46f9d17b2b074c887bff35b06112070b28924248

倉曎されたファむル442が倚すぎるため、差分党䜓を衚瀺できたせんでした。

良い。 だから私たちは技術を持っおいたす、それは簡単な郚分でした。 しかし、これは深刻な圱響を䞎えるため、これが私たちが望むものであるかどうかを刀断する必芁がありたす。

䞀行の垰属は地獄に行きたす。 そしお、それを受け入れる堎合は、おそらくテスタヌでフォヌマットを匷制する必芁がありたす。 テスタヌに​​TSLintを蚭定しおいるただし無効になっおいるので、倚くのこずができたす。

たぶん、テスタヌを、フォヌマッタヌを実行しおテストを実行できるCLI utilに改善する必芁がありたすこれはロヌカルで機胜するようになりたしたが、クリヌンなCLI apiなどで改善する必芁がありたす。

私は早いほど良いず蚀いたす。 しかし、良いニュヌスは、あなたが非難の歎史を倱うこずはないずいう

ええ、でもgit blame -w -Mがオンラむンで機胜しないのは残念です。 それに぀いおGithubサポヌトにメヌルを送信したした。

@ Bartvds 、GitHubからの応答はありたすか

珟圚、GitHubの非難ビュヌで空癜を無芖するこずはできたせんが、将来远加する可胜性がありたす。 提案をありがずうございたす。チヌムが確認できるように、機胜リク゚ストリストに远加したす。

ですから、もしあったずしおも、しばらく時間がかかるかもしれたせん。

想定されるすべおの知識やスタむルガむドが䜕を蚀っおいるかは気にしたせん。むンデント甚のタブは、配眮が関係しおいるずきに開発者の意図を維持する唯䞀の方法です。 それに぀いおの私のブログ投皿を参照し

use-tabs-for-indentation-spaces-for-alignment-anim

コヌドアラむンメントあなたの堎合はvarず=にアラむンメントの抂念は良いです。 しかし、リファクタリングで維持するのは難しいものです。 だから私はそれを䜿わない。 たた、自動フォヌマットツヌルはそれを尊重したせん。たずえば、TypeScriptの自動フォヌマットコヌド

たたのために

  public string FirstName { get; set; }        =>  public  string  FirstName { get; set; }    
  public string Surname { get; set; }          =>  public  string  Surname   { get; set; }
  public int Age { get; private set; }         =>  public  int     Age       { get; private set; }
  private Address Address { get;  set; }       =>  private Address Address   { get; set; } 

新しいプロパティを远加するず、これらすべおの行を_再フォヌマット_する必芁がありたす。 確認するのに適切なコヌド倉曎ではありたせん。

ワヌクフロヌが異なる可胜性があり、これを可胜にしおいる可胜性がありたす。 読みやすくなりたすがアヌトずしおコヌド化、チヌムがそれを移動するのを䜓隓するこずはできたせんでした。

それは最も奇劙なこずです。 タブずスペヌスを組み合わせるずいうアむデアに察する私の本胜的な反応は、震えながら「それはただの汚い」ず考えるこずです。

私が知っおいる完党に非合理的ですが、完党に誠実です。 人間は倉だ...

@johnnyreillyあなたは䞀般的な誀解の犠牲になっおいたす。 むンデントにタブを䜿甚し、䜍眮合わせにスペヌスを䜿甚するこずは、スペヌスを含むタブを_mixing_するこずず同じではありたせん。 あなたは明らかにブログ投皿を読んでいたせんでした。

䜍眮合わせにタブを䜿甚するこずは、人々がそれを間違っお行っおいたために、非垞に倚くのタブがたったくオフにされおいる理由です。 そもそも適切に実行しおいれば、タブ幅を別のサむズで衚瀺するように゚ディタヌの蚭定を倉曎したずきに誰も気付かなかったでしょう。 これは、䞊蚘のアニメヌションGIFが瀺しおいるこずであり、人々がそれをどのように間違っお行っおいるかを瀺しおいたす。

@basarat 、私はあなたに完党に同意したす。 コヌドアラむンメントのあるプロゞェクトに取り組むこずはめったにありたせんが、時々芋かけたす。 どういうわけか、プロゞェクトの開発者がアラむメントをたったく䜿甚しないように匷制できるのであれば、それを採甚するず思いたす。 それ以倖の堎合、むンデント甚のスペヌスがあるず、コヌドをCSTに解析する以倖に、リンティングツヌルなどでむンデントを目的ずしたものず䜍眮合わせを目的ずしたものを区別する方法がありたせん方法のやり過ぎ。

もちろん、この珟代ではむンデントにスペヌスを䜿甚しない理由は他にもたくさんありたす。 線集者はタブをうたく扱いたすが、スペヌスを扱うこずはありたせん。 矢印キヌナビゲヌション、削陀、バックスペヌス–スペヌスの1぀のむンデントを1぀のナニットのように扱いたせん。 Visual Studio、Sublime、PHPStorm、Notepad ++を䜿甚したしたが、これらはすべお、むンデント甚のスペヌスに関するこの根本的な問題を抱えおいたす。

矢印キヌナビゲヌション、削陀、バックスペヌス–スペヌスの1぀のむンデントを1぀のナニットのように扱いたせん。

ナビゲヌションCtrl +矢印キヌを䜿甚したす。 圌らはスペヌス本圓にすべおの空癜+単語をホップしたす。

削陀/バックスペヌスの堎合単語の遞択には、拡匵単語resharperのデフォルトからctrl + wず展開解陀遞択ctrl + shift + wを䜿甚したす。 空癜を遞択する必芁はめったにありたせんが、タブむンデントを増やすずShiftタブむンデントを枛らすを䜿甚するだけです。

@jedmao実際に私はあなたの

@johnnyreillyの萜ずし穎。

@basaratいく぀かの空癜のシナリオでは、 Home EndキヌずCtrl + arrow keyナビゲヌションを䜿甚しようずしたしたが、垞に機胜するずは限りたせん。 これが私が粟神的な䞀貫性からそれをめったに䜿甚しない理由です。 次の䟋を考えおみたしょう。

for (var i = 0; i < 10; i++) {
    if (i > 5) {
        console.log('I am greater than 5');
    }
}

カヌ゜ルが3行目の先頭にあり、2行目の先頭たで移動したいずしたす。

Sublimeでのテクニックを䜿甚しお、次の2぀の方法のいずれかを実行できたす。

  • Up 、 Hold Ctrl 、 Left 、 Release Ctrl 4぀の論理ステップ
  • Hold Ctrl 、 Left 、 Release Ctrl 、 Up 、 Hold Ctrl 、 Right 、 Left 、 Release Ctrl 8぀の論理ステップ

Visual Studioでは、2番目のシナリオを7぀の論理ステップに枛らすこずができたす。

  • Hold Ctrl 、 Left 、 Release Ctrl 、 Up 、 Hold Ctrl 、 Right 、 Release Ctrl 7論理的な手順

実際のタブ文字では、最短パスは修食キヌのない2぀の論理ステップのみです。 これ以䞊簡単なこずはありたせん。

  • Left 、 Up

単語の遞択が、間隔を空けたむンデントの削陀たたはバックスペヌスにどのように圹立぀かわかりたせん。 Visual Studioで詊したしたが、成功したせんでした。 これが、 VisualStudio甚の

実際のタブ文字では、修食キヌなしで垞に2぀の論理ステップになりたす。 これ以䞊簡単なこずはありたせん

+1あなたのアドバンテヌゞがわかりたす。 ただし、このコメントを線集するず、ctrlなどはVSず同じように機胜するため、私の習慣は匕き継がれたす;

単語の遞択が、間隔を空けたむンデントの削陀たたはバックスペヌスにどのように圹立぀かわかりたせん

私の悪い、私の説明は混乱しおいたした。 「ワヌド」遞択ビットは無芖しおください。 I rarely need to select inside whitespace though, just use tab (increase indent) and shift tab (decrease indent).に焊点を合わせるだけです。間隔を空けたむンデントで問題なく機胜したす。

実際のタブ文字では、修食キヌなしで垞に2぀の論理ステップになりたす。

どうですか

public  string  FirstName { get; set; }    
public  string  Surname   { get; set; }
public  int     Age       { get; private set; }
private Address Address   { get; set; } 

Ageの先頭からSurnameのタむプを倉曎するこず、぀たり前の行のstringはCtrlシナリオず同じではないでしょうか。

@basarat私はTabずShift+Tab宗教的に䜿甚しおいたす。 ただし、通垞は耇数行のコヌドの堎合です。 Shift+Tabは、タブのbackspaceキヌを抌すための適切な゚むリアスであるず蚀えるず思いたすが、 backspaceほど単玔でも盎感的でもないこずは明らかです。

Ctrl+DeleteはDeleteキヌに最も近い゚むリアスですが、耇数のむンデントを削陀する可胜性がありたす。 䞀方、タブの単玔なDeleteキヌは、1぀のむンデントのみを削陀したす。 他の人ではなく時々働くこずが、私がそれをたったく䜿わない理由です粟神的な䞀貫性。

私もあなたず同じように、空癜の内偎を遞択する必芁があるこずはめったにありたせん。 私はそうするこずを決しお提案したせんでした。 私は空癜を遞択しおいたせんが、どこかに到達するために空癜をナビゲヌトしおいたす。 䞊蚘の配眮䟋は、間違いなくCtrl + arrow keyナビゲヌションを䜿甚する堎合です。 これが、前に蚀ったように、あなたが指摘したシナリオがおそらく私がそれを䜿甚する唯䞀のケヌスであるため、私がCtrl + arrow keyナビゲヌションを䜿甚するこずはめったにない理由です。

結局のずころ、私が最も気になるのは、むンデント甚のタブずむンデント甚のスペヌスを含むファむルを切り替えるずきに、筋肉の蚘憶を完党に倉曎する必芁があるずいうこずです。 むンデント甚のタブがあるファむルで効率的な論理的な手順が最も少ないものは、むンデント甚のスペヌスがあるファむルでは機胜したせん。 シヌムレスな゚クスペリ゚ンスを提䟛しおいないこずで線集者を非難するこずもできたすが、線集者がむンデントずは䜕か、配眮ずは䜕かに぀いおむンデント甚のスペヌスがあるファむルで仮定を行うこずは文字通り䞍可胜であるためCSTなし、それは公平ではありたせん。

さらにいらいらするのは、人々がそれを認識するのがずおも難しいずいうこずです。 むンデントのためのスペヌスは玔粋な悪です...角がありたす。

最終的な結論は 貢献したいのですが、䞀䜓䜕を䜿っおいたすか

最終的な結論は 私はただ貢献したい、䞀䜓䜕を䜿っおいるのか

ファむルごずに䞀貫性がありたす。 これらをファむルに混圚させないでください

@basaratコミックは間違っおいたす。 Appleの人はスペヌスを䜿甚し、Microsoftの人はタブを䜿甚するこずは誰もが知っおいたす。

@jedmao私はmsの人で、スペヌスを䜿甚しおいたす:)

4211はいい提案だず思いたす。

airbnb / javascriptスタむルガむドのように2぀のスペヌスを䜿甚するこずを提案したす...

提案入力するラむブラリによっお蚭定されたコヌディング暙準を䜿甚しおください。 タむプされおいるラむブラリがスペヌス、䞀重匕甚笊、およびLFを䜿甚しおいる堎合は、タむプ定矩で同じこずを行いたす。 このようにしお、スペヌスずタブの匕数を回避できたす。

唯䞀の問題は、このルヌルを適甚するのは簡単ではないずいうこずです。 それを匷制し、完党な䞀貫性を持たせる必芁がある堎合は、最も䞀般的な芏則に埓うこずをお勧めしたす。 このりェブサむトによるず、それはスペヌスず䞀重匕甚笊です。

私の個人的な奜みはスペヌス4ず_double_匕甚笊ですが、すべおが䞀貫しおいるこずを意味する堎合は、䞀重匕甚笊を䜿甚しおも問題ありたせん。

プロタブずプロタブスペヌスのナヌザヌは同様の劥協案を受け入れるこずができたすか

私の個人的な奜みはスペヌス4ず二重匕甚笊ですが、すべおが䞀貫しおいるこずを意味する堎合は䞀重匕甚笊を䜿甚しおも問題ありたせん。

@ glen-84玔粋にあなたの嚯楜のために...コンパむラチヌムが二重匕甚笊を䜿甚した理由 https 

  • JSON
  • すべおの蚀語で機胜するため、認知的負荷が少なくなりたす

TypeScriptを排他的に実行するこずが増えおいるので、私は個人的に䞀重匕甚笊で囲みたすrose

少し読みやすく、57察43倧きな違いではないだったず思いたすが、どこかに線を匕く必芁があるず思いたす。 =

むンデント甚のタブず䜍眮合わせ甚のスペヌスに関する@jedmaoのポむントが奜き

完党な開瀺私はgo fmtあり、タブやスペヌスに぀いおの議論がないゎヌランドから来たした。むンデント甚のタブず䜍眮合わせ甚のスペヌスであり、非垞にうたく機胜したす+1

もちろんスペヌス。 タブが他の堎所で䜿甚されおいる堎合、タブがさたざたな゚ディタヌでどのように正確にレンダリングされるかは誰にもわかりたせん。

@hinellタブが異なる゚ディタヌで異なる方法でレンダリングされる堎合、なぜ重芁なのですか タブがむンデントに「のみ」䜿甚される限り、そうすべきではありたせん。

特にこれのために、私はタブを奜みたす http 

結局のずころ、タブを䜿甚するさらに倧きな理由がありたす。それは開発者のアクセシビリティです。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡