Nejlepší odpověď
Nejprve mi dovolte předmluvu tím, že už asi 10 let jsem profesionálním programátorem a fušování do programování téměř 20 let (protože jsem byl opravdu mladý). Napsal jsem PHP, Java, C ++, Python, JavaScript, C #, ASP a QBasic (ano, jsem starý). Pravidelně se také zabývám SQL, CSS a HTML.
Používal jsem editory pro Windows, Linux a Mac. Také jsem použil editory v terminálových oknech. Profesionálně programuji asi 10 let. Z osobní zkušenosti vám mohu říci, že když jsem použil více než 30 editorů (oba textové editory jako VIM a Nano i IDE jako Visual Studio a PhpStorm), výchozí zobrazení karet v editorech se velmi liší.
Dále, i když jim udělíte stejná nastavení, někdy máte jiné podivnosti a nekonzistence způsobené editorem nebo písmem editoru. Prostory tento problém prostě nemají, protože jsou konstruktem standardního jazyka.
Jedna věc, které jsem si trvale všiml, je, že většina průvodců stylem programování, jako je PHP-FIG, vám říká, abyste používali mezery na tabulkách. To je tabbing, který pomocí mezer napodobuje znak tabulátoru. Někdy se tomu říká inteligentní tabulátor.
Toto je podporováno v každém editoru, o kterém si myslíte, že je přiměřeně moderní. Takže argument o rychlosti je naprosto směšný. Pokud jde o argument o prostoru zabraném na disku. Doslova nikoho nezajímá asi půl bajtu navíc ve velikosti souboru. Pokud vás to zajímá, dostáváte královsky místo na disku a náklady.
Jediným argumentem, který zbývá, je vizuální zobrazení. To je místo, kde mezery zanechávají poutka v prachu. Na kartách, které vidíte s mezerami, se konzistence neuvidí. V absolutně každém editoru vypadají prostory stejně. Karty se značně liší a pokud budete někdy muset otevřít soubor v editoru terminálu (řekněme, když něco kontrolujete na vzdáleném serveru), budete nenávidět práci s kartami, zvláště když budete muset v textovém editoru posunout cestu doprava.
Pokud chcete konzistenci a standardizaci (zejména nejběžnější standardy), použijete mezery. Pokud se chcete soustředit pouze na směšné stížnosti a naštvat ostatní vývojáře, se kterými pracujete, použijte karty.
Odpověď
Výhody karet v mezerách jsou:
- Jednotliví vývojáři mohou pro svůj kód zvolit různé odsazení.
- Používají také méně úložného prostoru.
Karty však mají problémy.
Karty špatně interagují s maximální šířkou sloupce. Project vyberte maximální šířky sloupců z několika důvodů, včetně zajištění toho, aby vývojáři mohli na svých monitorech provádět různé rozdíly, a zajištění toho, aby vývojáři mohli rychle skenovat kód. (Délka dlouhých řádků snižuje rychlost čtení. Z tohoto důvodu vydavatelé používají v učebnicích více sloupců.)
Předpokládejme, že váš standard kódování určuje maximální délku řádku 80 sloupců.
První vývojář vývojář má řádek, který byl odsazen čtyřikrát, a používají nastavení odsazení dvou značek. To znamená, že kód je odsazen 8 sloupců. Vývojář píše celý řádek. Tento řádek obsahuje 72 znaků.
Tento kód jde recenzentovi. Recenzent se podívá na kód, který používá odsazení na kartě se 4 znaky. Čtyři karty mají nyní šířku 16 znaků. Řádek nyní jde do sloupce 88. Recenzent říká vývojáři, aby odřízl 8 znaků.
Druhý recenzent, který se dívá na kód, používá odsazení o 8 znacích. Recenzent se dívá na kód pomocí 8místné odrážky na záložce. Čtyři karty mají šířku 32 znaků. Recenzent říká vývojáři, aby odřízl 24 znaků.
Tyto problémy zmizí, pokud použijete mezery nebo určíte jednotné nastavení karty pro organizaci. Pokud zadáváte pevné nastavení karty, odstranili jste jeden z hlavních argumentů pro začátek používání karet.
Nyní pojďme zvážit dokument zde nebo víceřádkový řetězec obsahující formátovaný text. Můžete vložit diagram vytvořený pomocí nástroje jako asciiflow nebo monodraw. Pokud pro zarážky používáte záložky, bude nutné pro odsazení výkresů použít kombinaci odsazení a mezer. Aby to fungovalo s různými odsazeními karet, vyžaduje:
- Použití kombinace úvodních karet s mezerami k zarovnání k danému sloupci. Všechny řádky v obrázku musí mít stejný počet odsazení tabulátoru, jinak obrázek nebude vypadat správně, pokud bude použit s jiným nastavením odsazení tabulátoru.
- Vložení znaku značky k označení začátku oddílu s mezerou. např. \ t / * \ n \ t * foo \ n \ t *. | \ n \ t * bar \ n \ t * / \ n
- Opuštění standardu záložek v těchto grafických oblastech.
- Zakázání víceřádkových řetězců nebo komentářů.
Všechny tyto problémy zmizí, když použijete mezery pro odsazení.