Autor Zpráva
Joker
Profil
Autor: Joker
Odkaz na aktuální pracovní verzi textu: pehapko.cz/zakladni-kurz/3-nastaveni-editoru
Zveřejněno

Odkud se vede diskuse k aktuálnímu stavu textu:
První příspěvek po poslední revizi textu

Ještě k tomu mám rozdělaný obrázek, ten sem přidám později.
Majkl578
Profil
Toto kódování používejte i pro HTML a nastavte ho jako použíté kódování v hlavičce
V hlavičce HTML nebo PHP? Nebo obou?

S výjimkou úprav starších projektů používajících jiné kódování není důvod používat
něco jiného než UTF-8.

Chybí zdůvodnění - proč?

V UTF-8 může editor na začátek souboru přidávat identifikační bajty, tzv. BOM,
které ale v PHP mohou někdy způsobit problémy.

Mohou, ale nemusí. Pokud má PHP nastaveno zend.multibyte=1, nemělo by mu to vadit.

Běžné výchozí hodnoty editorů bývají 2, 3 nebo 4 znaky
Zdroj? Tři jsem ještě nikdy neviděl a dvě jsou rarita (na tom si trvám, min. u větších open-source projektů).

Zároveň dělte kód na řádky tak, aby se všechny řádky na tuto šířku vešly.
Tohle bych takhle explicitně nezmiňoval, nejsem příznivcem pevné šířky, navíc existuje automatické zalamování dlouhých řádků.

Přesto, velmi dlouhé řádky jsou zase nepřehledné.
Nebral bych to jako dogma, ono asi záleží co ten řádek zrovna obsahuje, ale o tom by se asi dalo spekulovat.



Co mě zrovna napadá, přidal bych ještě zmínku o:
- automatickém odstraňování bílých znaků (mezer, tabulátorů) na koncích řádků (slušné editory to umí),
- o koncích řádků - používat vždy LF místo CRLF.
Joker
Profil
Majkl578:
V hlavičce HTML nebo PHP? Nebo obou?
Myšleno HTML, nastavování hlaviček v PHP se ještě neprobíralo (resp. ono se do té chvíle neprobíralo ještě vůbec nic z reálného PHP programování)

Chybí zdůvodnění - proč?
Nechci tam psát nějaké elaboráty, ale zkusím to rozšířit.

Pokud má PHP nastaveno zend.multibyte=1, nemělo by mu to vadit.
Jednak je to až od PHP 5.4, jednak výchozí hodnota je vypnuto. Přijde mi bezpečnější si BOM vypnout.

Tři jsem ještě nikdy neviděl a dvě jsou rarita
2 je třeba výchozí nastavení PSPadu a 3 jsem někde viděl, ale už si nevzpomínám kde.

nejsem příznivcem pevné šířky, navíc existuje automatické zalamování dlouhých řádků
O automatickém zalamování jsem přemýšlel, ale bojím se, že to pak bude začátečníky mást ohledně číslování řádků („proč je řádek 32 až tři řádky za 31?“).
A když pak dotyčný bude mít problém a bude posílat ten kód sem (nebo jinam) do diskuse, nějaké rozumné zalamování se bude hodit.

Jinak samozřejmě díky za připomínky, upravím.
Joker
Profil
Aktualizoval jsem text kapitoly.
Přidal jsem automatické odstraňování bílých znaků a konec řádku přes LF.
Upravil jsem odrážky o UTF-8 a šířce tabulátorů.
Věta o šířce řádků je nyní méně autoritativní.
Str4wberry
Profil
Podle mě by tam měla být zmínka o funkci „Automaticky zformátovat kód“. Pro začátečníka a ostatně i pokročilého je to lepší než nějaká onanie s tabulátory a mezerami.
Majkl578
Profil
Str4wberry:
Pro začátečníka a ostatně i pokročilého je to lepší než nějaká onanie s tabulátory a mezerami.
Považuji za velmi důležité, aby se začátečník naučil správně formátovat kód sám a to čím dříve, tím lépe. Spousta problémů pochází právě z nepřehledného kódu, kde se snadno přehlédne závorka (v editoru bez kontroly syntaxe).
Automatické formátování bych určitě taky zmínil, ale rozhodně bych jej neupřednostňoval před vlastními návyky.


Joker:
Další výtky mě momentálně nenapadají. Dobrá práce.
Joker
Profil
Str4wberry:
Podle mě by tam měla být zmínka o funkci ‚Automaticky zformátovat kód‘.
Přidal jsem zmínku o automatickém formátování do bodu o odsazování.
margin
Profil *
Joker:
konec řádku přes LF
Jako laik bych rád věděl proč. Je k tomu nějaký důvod, nebo to patří pod coding standards?
Joker
Profil
margin:
Jako laik bych rád věděl proč. Je k tomu nějaký důvod, nebo to patří pod coding standards?
Taky mi to nepřijde až tak podstatné, ale:
Jednak to je standard v Linuxu na kterém běží většina PHP hostingů a jednak se tím zamezí tomu, aby po přenosu na hosting „vznikly“ v souboru prázdné řádky.
Petr ZZZ
Profil
Joker:
Srozumitelný a jasný text, dobrá práce. Připomínky k obsahu nemám, na to mi chybí vědomosti; jen některé formulace mi přijdou redundantní nebo zbytečně dlouhé a občas se opakuje nějaké slovo až příliš často (nastavení, nastavit). Pokusil jsem se to trochu přeformulovat; dám to rovnou sem, snad to nevadí. Tvoje vysvětlení, proč nastavit LF, bych taky připsal (čtenář je zvědavý – taky jsem si, stejně jako margin, říkal "proč?").

Doporučené nastavení editoru

Máte-li po přečtení minulé kapitoly [odkaz] vybraný editor pro PHP, věnujte chvíli jeho nastavení – ušetříte si čas a vyhnete se některým problémům. Ve skutečnosti nebudete muset všechny uvedené body řešit, bývají v editorech nastaveny jako výchozí. Obvykle stačí po instalaci jednoduše začít pracovat a příslušnou funkčnost změnit, až když narazíte na jiné chování, než je zde uvedeno.

- Editor by měl při psaní kódu zvýrazňovat syntaxi. Pokud to nedělá, zkontrolujte nastavení zvýrazňovače. Pokud to ani neumí, použijte jiný editor (viz předchozí kapitola [odkaz]). Pokud zvýrazňuje divně/špatně, zkontrolujte, zda máte jako jazyk vybráno PHP.
- Zajistěte ukládání souborů v kódování UTF-8. Toto kódování používejte i pro HTML a nastavte ho v hlavičce (jak - [odkaz]). Na rozdíl od starších kódování je UTF-8 univerzální a funguje pro všechny jazyky, takže s výjimkou úprav starších projektů používajících jiné kódování není důvod používat něco jiného.
- V UTF-8 může editor na začátek souboru přidávat identifikační bajty, tzv. BOM, které ale v PHP mohou někdy působit problémy. Nastavte editor, aby je nepřidával.
- Zvolte odsazování kódu pomocí tabulátoru (nikoli mezer) a pro odsazení používejte při psaní kódu klávesu tab. Editory s formátováním kódu pomáhají; minimálně novým řádkům kopírují odsazení z předchozího řádku, ty lepší umějí detekovat začátek/konec bloku a přizpůsobit odsazení. Také většinou mají funkci na automatické přeformátování celého kódu, kterou můžete použít na delší špatně zformátovaný kód.
- Určete vhodnou šířku tabulátoru. Při malé šířce špatně odlišíte jednotlivé bloky kódu, při moc velké budou hlouběji vnořené bloky zabírat příliš mnoho místa. Většinou vyhovuje výchozí hodnota, která bývá čtyři znaky, někdy dva.
- Editory často umí automaticky odstraňovat zapomenuté bílé znaky (mezery, tabulátory) na koncích řádků. Zapněte tuto funkčnost.
- V lepších editorech bývá možnost si zvolit znak pro konec řádku z variant CR, LF a CRLF. Zvolte LF; je to standard v Linuxu, na kterém běží většina PHP hostingů, a také se tím zamezí tomu, aby po přenosu na hosting „vznikly“ v souboru prázdné řádky.
- Zapněte zobrazování čísel řádků.
- Máte-li dostatečné rozlišení monitoru, nastavte si vedle editoru okno se soubory projektu. S výjimkou nejjednodušších skriptů bude projekt obsahovat více souborů a takto se v nich budete snadněji orientovat.
- Zvykněte si organizovat jednotlivé projekty do adresářů (složek) na disku, nemějte všechny soubory na jedné hromadě.
- Okno pro psaní kódu nastavte tak široké, aby se do něho vešel řádek dlouhý zhruba 120-160 znaků; dělte kód na řádky respektující tuto šířku. Některá doporučení pro psaní kódu dokonce radí nepřekračovat 80 znaků na řádek, ale taková šířka vypadá na dnešních velkých monitorech přímo směšně. Velmi dlouhé řádky jsou ovšem nepřehledné a je lepší zalamovat kód tak, aby se na šířku vešel do okna.
Jan Tvrdík
Profil
Chtělo by to konkrétní postup (se screenshoty) pro PSPad a NetBeans.


Nejprve připomínky k tvému textu
• „Na rozdíl od starších kódování UTF-8 je univerzální“ – prohodit slova „UTF-8“ a „je“
• „funguje pro všechny jazyky“ – nezkušený čtenář se může domnívat, že máš na mysli programovací jazyky
• „většinou mají funkci na automatické přeformátování celého kódu“ – většinou editorů ne, většina IDE ano
• „v lepších editorech bývá možnost si zvolit znak pro konec řádku“ – umí to PSPad, Notepad++ a snad všechny IDE
• „Některá doporučení pro psaní kódu dokonce radí nepřekračovat 80 znaků na řádek, ale taková šířka vypadá na dnešních velkých monitorech přímo směšně.“ – Celou větu vyhodit, je zavádějící až lživá. I dnes platí, že naprostá většina řádků by neměla nikdy překročit 80 znaků. Je-li to ale praktické (což občas je), není už dnes problém tuto hranici překročit.
• „nastavte si vedle editoru okno se soubory projektu.“ – To vypadá, jak bys vedle toho editoru chtěl mít otevřené okno s průzkumníkem. Lépe „panel se soubory projektu“


Teď ještě pročtu text od Petr ZZZ:
• „příslušnou funkčnost změnit“ – příslušné nastavení změnit.
Joker
Profil
Jan Tvrdík:
• „Na rozdíl od starších kódování UTF-8 je univerzální“ – prohodit slova „UTF-8“ a „je“
• „funguje pro všechny jazyky“ – nezkušený čtenář se může domnívat, že máš na mysli programovací jazyky
• „nastavte si vedle editoru okno se soubory projektu.“ – To vypadá, jak bys vedle toho editoru chtěl mít otevřené okno s průzkumníkem. Lépe „panel se soubory projektu“
Upravil jsem.

• „většinou mají funkci na automatické přeformátování celého kódu“ – většinou editorů ne, většina IDE ano
Změnil jsem na „často“

• „v lepších editorech bývá možnost si zvolit znak pro konec řádku“ – umí to PSPad, Notepad++ a snad všechny IDE
To mi nepřijde v rozporu s tím co jsem napsal.

• „Některá doporučení pro psaní kódu dokonce radí nepřekračovat 80 znaků na řádek, ale taková šířka vypadá na dnešních velkých monitorech přímo směšně.“ – Celou větu vyhodit, je zavádějící až lživá. I dnes platí, že naprostá většina řádků by neměla nikdy překročit 80 znaků. Je-li to ale praktické (což občas je), není už dnes problém tuto hranici překročit.
No, mně nějakých 120 připadá jako daleko smysluplnější hranice.
Můj monitor s šířkou 1600px dneska není nic extra a i když na něm mám v IDE otevřený editor uprostřed a panely na levé i pravé straně okna, pořád zbývá v editoru dost místa na kód šířky 120.
80 mi fakt připadá jen jako číslo udržované jakousi tradicí.
Jan Tvrdík
Profil
Joker:
80 mi fakt připadá jen jako číslo udržované jakousi tradicí.
Ano, proto mi bych to číslo vůbec nezmiňoval. Problém je v tom, že ty ho zmiňuje a shazuješ formulací, ze které může vyplynout, že je chyba psát krátké řádky. Není. Většina řádků má být krátká a je to tak v pořádku.
Je lepší (obzvlášť pro začátečníky) napsat
$lines = file($file, FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES);
foreach ($lines as $line) {
    $len = mb_strlen($line, 'UTF-8');
    $lengths[$len]++;
}
než
foreach (file($file, FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES) as $line) $lengths[mb_strlen($line, 'UTF-8')]++;

(Tohle jsem měl zrovna po ruce, v praxi to může dopadnout mnohem hůř.)
Joker
Profil
Jan Tvrdík:
Problém je v tom, že ty ho zmiňuje a shazuješ formulací, ze které může vyplynout, že je chyba psát krátké řádky.
Aha, no tak to ale můžu přeformulovat tak, aby byl víc zřejmý záměr, že maximální délka řádku není totéž jako běžná délka řádku.
Pravda, asi bych tam neměl brát zalamování řádku za každým příkazem jako samozřejmost, kterou vůbec není třeba zmiňovat.
joe
Profil
Petr ZZZ:
Zvolte odsazování kódu pomocí tabulátoru (nikoli mezer)
Důvod, proč nepoužívat mezery, ale tabulátory? Někdo se odkazuje na Zend Coding Standards, kde používání tabů není povoleno.

(V práci se rozhodlo na mezery a já teď stisknutí backspacu musím ještě třikrát opakovat :-()
Joker
Profil
joe:
Důvod, proč nepoužívat mezery, ale tabulátory?
Jde pak nastavit šířka odsazení, jedna úroveň odsazení odpovídá jednomu znaku (zatímco u mezer se občas stane, že nějaký řádek je špatným počtem mezer odsazený mezi dvě úrovně) a lépe se s tím pracuje v některých editorech (viz zmíněný 4x backspace, nebo tuším že v některých editorech byl problém třeba se zmenšením odsazení bloku odsazeného mezerami -Ale to mohlo být způsobené nastavením-).
joe
Profil
Joker:
Já vím, já to myslels spíš jako do toho popisu :-) Myslím, že u doporučování (pokud je na výběr) by měl být i důvod a to je ten, co jsi mi napsal. Kromě toho v kódu se odsazuje, k odsazování slouží tabulátor, ne mezery. Nemam rád mezery v kódu (na odsazení, v horším případě ještě na dorovnání), dělají zmatek.
Joker
Profil
joe:
Já vím, já to myslels spíš jako do toho popisu :-)
Jo takhle :-)
Joker
Profil
Zveřejněno.

Text zůstal od poslední revize prakticky stejný, jen jsem doplnil odkazy.

Vaše odpověď

Mohlo by se hodit

Ostrá verze učebnice běží na www.pehapko.cz.

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: