it-swarm-eu.dev

Karty versus mezery - jaký je správný znak odsazení pro všechno, v každé situaci, někdy?

Standardy kódování pro kód hostovaný na adrese drupal.org navrhují použít dva mezery k odsazení kódu; jiné weby doporučují používat karty k odsazení kódu.

Jaký je správný charakter odsazení pro všechno a v každé situaci? Vysvětlete prosím odpověď.

84
kiamlaluno

Mezery

Karta může být různým počtem sloupců v závislosti na vašem prostředí, ale mezera je vždy jeden sloupec.

Pokud jde o to, kolik mezer (nebo karet) představuje odsazení, je důležitější být v celém kódu konzistentní než použít jakoukoli konkrétní hodnotu zarážky na kartě.

129
user8

Tabs

Nyní, samozřejmě, na konzistenci záleží více než na jedné, a dobrá IDE = činí rozdíly zanedbatelné.) To znamená, že smyslem tohoto vlákna je být svatá válka, takže:

Dávám přednost kartám:

  • Jsou to postavy určené speciálně pro odsazení
  • Umožňují vývojářům s různými preferencemi ve velikosti odsazení změnit vzhled kódu beze změny kódu (oddělení dat a prezentace pro příslovečné vítězství!)
  • Nelze napůl zarovnat něco pomocí karet. Takže když zkopírujete kód z nějakého webu, který použil 3 mezery, do vašeho čtyřprostorového odsazeného souboru, nemusíte se vyrovnávat s nevyrovnaností.
248
Fishtoaster

Pomocí karet můžete odsadit začátek řádku, jeden kartu na úroveň odsazení, a nechat každého, aby si vybral, jak široký má být.

Pokud zarovnáváte znaky v řádku , použijte mezery, takže se vždy zarovnají bez ohledu na velikost karty.

A najděte a uderte všechny rané autory softwaru, kteří nechali tuto hloupost stát se problémem.
(Vážně, proč je to ještě něco, o čem se diskutuje? Dále mi řeknete, že chcete také použít více znaků pro konce řádků!)

117
Peter Boughton

Karty

  • umožňují, aby byly chyby znatelnější , je to nepříjemné pro mikro správu do mezer.
  • jsou konzistentní , používají se pouze pro odsazení, pokud nekomentujete špatně.
  • jsou přizpůsobitelné , můžete v možnostech editoru určit, jak jsou široké.
  • jsou produktivnější , proč zadejte 4 mezery, když můžete zasáhnout 1 kartu.
  • zabírají menší velikost než více mezer.
  • zabere více místa než mezera
  • zabere méně času .
  • mají tendenci pracovat lépe v IDE.

Mezery by se měly používat tam, kde jsou karty zcela k ničemu.

Dokonce i pro zarovnání parametrů a komentářů karty stále fungují lépe .

76
Tamara Wijsman

Všechny argumenty pro karty jsou teoreticky skvělé. Ale...

Teorie, praxe a teorie jsou stejné. V praxi tomu tak není.

Ano, s kartami můžete rozhodnout o úrovni odsazení. A ano, k vyrovnání věcí můžete použít kombinaci karet a mezer. A v ideálním světě by to bylo

Ve skutečnosti nevidíte rozdíl mezi mezerami a kartami, zdá se, že při pohybu kódu se vždy míchají, a prohlížení kódu v jiném programu, který má záložky nastavené na 8 sloupců, je nepříjemnost.

Použil jsem karty. Pak jsem začal pracovat jako součást týmu a sdílet kód. Rychle jsem se stal zastáncem prostoru. Takže i když dokážu sympatizovat s utopií karet, neumím si představit, že nepoužívám mezery.

41
g .

Některé relevantní názory, které by mohly být zajímavé:

31
Fishtoaster

Karty pro vítězství.

23
Joel Barsotti

I. absolutně. nenávist. 4. mezery.

Proč? Hlavně proto, že mě nebaví navigovat kód pomocí klávesnice a musím neustále zasáhnout leftleftleftleft, abych prošel jedním odsazením. Toto se zrodilo z raných verzí programu Notepad ++ a dokonce z obyčejného poznámkového bloku systému Windows, kde nebylo nic jako tlačítko formátu. Měl jsem tolik problémů, když lidé používali pouze 3, když jsem mimo jiné použil 4 všude jinde.

Druhým důvodem je to, že znak existuje specificky pro odsazení a byl pro navigaci přijat až později. Proč děláme spacespacespacespace když by fungoval jednoduchý tab? Proč by se IDE musely vypořádat s 2-5 mezerami a formátovat správně, když by fungovala jednoduchá karta a preferovaná volba?

Bohužel jsem menšina.

20
TheLQ

Já osobně rád používám karty ve všem, protože každý vývojář může ovládat množství odsazení na kartu. Tímto způsobem získáte flexibilitu v zobrazení.

Jak již bylo řečeno, obvykle napodobuji jakýkoli styl kódování v souboru, který začíná (protože trávím spoustu času údržbářskými pracemi).

12
Brandon

Nemyslím si, že existuje něco jako správné odsazení (alespoň ne bez menší války).

Osobně mám rád čtyři prostory. Umožňují mi číst kód mnohem rychleji a vypadají stejně v každém editoru - dokonce i ve Vi.

10
Josip Medved

Prostory, protože když zarovnáte komentáře napravo od kódu nebo seznamů parametrů funkcí nebo složitých víceřádkových výrazů nebo věcí takové povahy, chcete, aby se vaše krásná práce objevila pro všechny. Pokud použijete karty a umožníte lidem nastavit jejich tabstops odlišně, přeruší zarovnání pro všechny kromě nejjednodušších případů odsazení kódu.

Kromě toho je očividně zřejmé, že každý na světě by měl používat vim, což činí triviální odsazení, odsazení a procházení „zarážkami tabulátoru“ i v souborech s odsazením prostoru.

8
hobbs

Karty jsou přirozenou a ortodoxní volbou, protože se podle definice používají pro odsazení.

Karty jsou bohužel implementovány nerovnoměrně, takže jediným řešením ve skutečném světě jsou 4 mezery.

6
Wizard79

Samozřejmě potřebujete kombinovaný přístup.

Pokud sdílíte kód s jinými vývojáři, musíte standardizovat, a protože to není možné (koff koff), musíte udělat, aby všichni udělali čtyři mezery.

Pak potřebujete editora, který je dostatečně chytrý, aby o tom nebyl hloupý, aby věděl, že by měl zacházet s řádkem se čtyřmi mezerami v přední části, jako by byl odsazený. Kterýkoli moderní IDE nebo editor programátorů) může automatický tok kódu s mezerami místo tabulátorů.

4
Dan Ray

Proč to někdo nemůže implementovat:

  • kód je uložen v kompaktním formátu, který je pro příslušný systém prospěšný
  • jak každý dev otevře kód, je formátován přesně tak, jak ho chtějí
  • když s tím skončili, zpět do kompaktního formátu

Každý je šťastný, protože všichni vidí svůj „vlastní“ formát

Je to tak těžké?

4
adolf garlic

Jsem typ 4 vesmírného typu, karty prostě nejsou konzistentní.

3
Walter

Odpověď zní, že pro každou situaci nemůže existovat jediný správný znak odsazení. Formátování pomocí znaků je nepružné a může způsobit konflikt, když se v týmu používají různé styly.

Jedinou metodou, jak bezchybně a flexibilně formátovat kód s různými styly formátování, je to virtuálně, tj. Bez odsazení znaků. Jediný editor kódu, který vím, který toto podporuje, je ten, který se používá v níže uvedeném příkladu:

Pro demonstraci virtuální formátování je níže uvedený snímek obrazovky z editoru XSLT *, který používá tuto metodu odsazení (existuje také krátké video zde ). Každý znak v XSLT byl pro ilustraci zvýrazněn žlutě, aby bylo možné jasně vidět pouze znaky tabulátoru nebo mezery v obsahu. Odsazení kódu je zpracováno vykreslovacím systémem editoru úpravou levého okraje (který má bílé pozadí).

enter image description here

Jediné úvodní mezery předcházejí řádkům Knihy, protože toto je doslovný textový obsah, nikoli kód, tyto mezery je třeba zachovat.

S virtuálním formátováním si vyberete šířku odsazení tak, aby vyhovovala prostředí a stylu odsazení, aniž by to ovlivnilo jakékoli znaky ve zdrojovém souboru. Šířku odsazení můžete dokonce nastavit na 0, pokud potřebujete zploštělé zobrazení kódu, jak je znázorněno níže:

enter image description here

Chcete-li to porovnat s formátováním mezer, stejný XSLT otevřený v editoru bez virtuálního formátování je tímto editorem automaticky formátován na toto:

enter image description here

Větší prázdné žluté bloky na obrázku výše jasně ukazují mezery, které přidal formátátor konvenčního editoru. Tyto položky bohužel nyní nelze odlišit od skutečného obsahu, takže k opravě tohoto problému by muselo být upraveno XSLT.

Souhrn

XSLT je možná extrémní případ, ale tento princip platí pro mnoho programovacích jazyků: Znaky by měly být použity pro obsah a měla by se hledat alternativní metoda, pokud jde o formátování.

** Zveřejnění: Editor XSLT s virtuálním formátováním byl vyvinut mou vlastní společností *

3
pgfearo

Dosud se nezmiňuje: Existují jazyky (Python, Haskell), na nichž záleží na odsazení. Ale 1 znak se počítá jako 1 znak, ať už je to mezera nebo karta, takže odsazení viděné kompilátorem nemusí být stejné, jaké vidíte na obrazovce, pokud používáte karty.

Proto v jazycích jako Haskell jsou mezery nutností. V Makefiles jsou TABS nutností. Ve všech ostatních je to záležitost osobního vkusu a dnes to není moc - každý slušný editor má příkaz „(vedoucí) tabulátory do mezer“ a „(vedoucí) mezery na tabulku“.

3
Ingo

Prostory nebo karty - To, co Atwood skutečně říká, je vybrat jednu věc a být ve vašem projektu konzistentní. Jediným svatým grálem formátování kódu je zajistit, aby byl konzistentní, aby psychopat, který udržuje váš kód poté, co se necítíte nucen trvale situaci napravit.

To znamená, že pokud pracujete v Python nebo v jakémkoli jiném jazyce, kde je bílé místo skutečným programovacím konstruktem, nedokážu si představit pomocí karet).

3
Noah Goodrich

Očividně si karty dělají věci v Delphi, takže v Delphi karty nepoužívám.

Používám však všechno ostatní pomocí Emacsu a vždy používám karty, protože moje karty jdou přesně tam, kam chci.

3
Peter Turner

Kdysi jsem používal mezery, ale nedávno jsem používal karty čistě proto, že na to byl Eclipse nastaven, když jsem si konečně všiml. Všichni ostatní vývojáři v mém týmu používají Eclipse, takže bylo smysluplné standardizovat karty, když jsme si uvědomili, že jsme je už věky používali, a nebyl důvod obtěžovat změnu prostoru. Překvapilo mě, kolik toho nevydalo.

Nastavení velikosti zobrazené karty na 3 nebo 5 znaků ve vašem IDE) výrazně zjednodušuje rozlišování mezi částmi kódu, které jsou odsazeny mezerami (téměř vždy 4 tyto dny), a těmi, které jsou odsazeny tabulátorem.

2
Shabbyrobe

Mnoho argumentů již bylo uvedeno, ale nikdo se nezmínil, kam bychom v budoucnu mohli směřovat .

Záložky ani mezery!

V ideálním případě by kód měl být považován za data a neměl by být uložen v žádném konkrétním formátování textu. Každý vývojář může použít svůj vlastní preferovaný pohled. Navíc by toto zobrazení nemělo být omezeno pouze na text , ale může zahrnovat tabulky, výběr barvy a matematické vzorce.

Tento nápad není příliš přitažlivý. Byl to JetBrain's Language Oriented Programming editor Meta Programming System (MPS) , který mě poprvé přiměl uvědomit si, že to vyřeší celou diskusi a současně přidá spoustu dalších možností. (Ano, je to možné pomocí pluginů editoru, ale práce s textem přímo přidává tolik zbytečných komplikací, na rozdíl od přístupu, který používá MPS.)

Na rozdíl od tabulátorů a mezer existují malé nevýhody, které lze zmínit při přímé práci na abstraktní syntaktické stromy . Vše, co je potřeba, je, aby technologie dospěla na komerčně životaschopný produkt. Objevují se první známky toho. Z velké části postavený na MPS byl vytvořen komerční editor skriptů Realaxy .

Rád bych viděl, jak jeden z velkých hráčů skočí na koncept této technologie a uvidí, co se stane!

1
Steven Jeuris

Ani lepší není, ani horší. Jedinou důležitou věcí je být důsledný.

Pokud jste tým jednoho, vyberte si, co se vám osobně líbí. Zvažte, jaké výchozí chování vašeho oblíbeného editora, ale vyberte, co se vám líbí.

Pokud jste v týmu, udělejte to, co tým dělá. Doba.

Ve svých různých úlohách jsem použil dva mezery, čtyři mezery, osm mezer, karty, mezery a tabla, myslím, že jsem možná také použil jeden mezeru. Řeknu svému editoru, co mám dělat, pak na to nepřemýšlím, editor vymezí podrobnosti.

Jedinou další věcí je zajistit, abyste si vybrali inteligentního editora. Emacs nebo vi? Teď to svatá válka jsem ochotný bojovat :-)

0
Bryan Oakley