Názvy proměnných v příkladech dokumentace – česky nebo anglicky?
- petr.pavel
- Člen | 535
Kde je napsáno, v jakém jazyce se mají pojmenovávat názvy proměnných v příkladech v dokumentaci? Nedávno mi někdo opravil v české dokumentaci český název proměnné $cisloObjednavky na $orderId. Klidně, ale proč si myslí, že takhle je to správně? Současná česká dokumentace obsahuji místy i české názvy.
Pokud to ještě není oficiálně rozhodnuto, rád bych se zeptal na váš názor. Argumenty mám pro obě varianty. Podotýkám, že mluvím o české dokumentaci, v anglické bych používal vždy angličtinu.
české názvy
- čistota: tak jako do českého textu nepatří anglické výrazy, nepatří ani do proměnných
- čeština je pro českého čtenáře méně náročná, takže zjednodušíme pochopení vysvětlovaného tématu
- lépe se odliší součásti Nette od vlastní logiky aplikace: $mailer = new SmtpMailer(), ale $objednavka = new ObjednavkaModel;
anglické názvy
- méně práce při překladu do angličtiny
- někteří si myslí, že to vypadá víc cool a profi :-)
- petr.pavel
- Člen | 535
No, když je to pravidlo nepsané, tak radši počkám, až to potvrdí ještě někdo jiný. ;-) Pak ho doplním do Psaní dokumentace. Nemyslím, že by to patřilo do Coding Standard, protože ten chápu jako doporučení, jak psát i vlastní opravdové programy, nejen příklady do dokumentace. Volbu jazyka bych v případě vlastních projektů nechal na programátorovi.
Čistě akademicky by mě zajímalo, z jakého důvodu jste se pro angličtinu rozhodli.
- petr.pavel
- Člen | 535
Do diakritiky bych taky nešel, ale jinak myslím, že je to otázka použitelnosti. Jestli je to pěkné nebo ne, vnímá každý jinak. Už jsem viděl dost zdrojáků, kde se chudáci programátoři pokoušeli něco vysvětlit anglicky, ale napáchalo to víc škody než užitku. Programátor ne-Čech by takové pidgin English stejně nerozuměl.
Nemá smysl si hrát na to, že zrovna můj projekt bude jednou upravovat nějaký cizinec. Můžete namítnout, že si zbytečně zavírám vrátka, ale je to otázka pravděpodobnosti. Daleko pravděpodobnější v určitém kontextu může být, že ho bude upravovat programátor, který bude psát tak blbě anglicky, že jeho komentáře budou bláboly a názvy proměnných zavádějící. A nejhorší jsou pravopisné chyby, třeba taková db tabulka refferals.
Zdrojáky Nette by měly být komplet v angličtině, ale já jsem tohle vlákno otevřel kvůli proměnným v příkladech. Komentáře máme česky, tak proč proměnné ne?
- Filip Procházka
- Moderator | 4668
Nechápu proč přepisuješ i routy. Napadlo tě, že adresy webu by chtěl mít třeba někdo česky?
Když píšeš nějaký kód, tak názvy proměnných, třídy a metod by měly být dostatečně popisné, aby jsi komentáře vůbec nepotřeboval. V takových případech jsou komentáře u příkladů jenom pro doplnění, aby autor nemusel dělat šipečky k odstavcům.
- Komentáře česky v dokumentaci ano. Ve zdrojovém kódu anglicky.
- Názvy proměnných, tříd, metody,… vžd anglicky
Editoval HosipLan (31. 8. 2011 12:08)
- petr.pavel
- Člen | 535
@HosipLan: Mluvíš teď o mých dnešních korekturách v Routingu?
Možná sis nevšiml kontextu. Tohle je příklad, o kterém se bavíme:
// staré URL /product-info?id=123
$router[] = new Route('product-info', 'Product:detail', Route::ONE_WAY);
// nové URL /product/123
$router[] = new Route('product/<id>', 'Product:detail');
Původně tam bylo Route('produkt/<id>'
, což
neodpovídalo komentáři nad tím. Z příkladu mi nevyplývalo, že by se
jednalo o českou alternativu url k anglické. Proč si to myslíš ty?
Jinak tohle bychom asi radši měli probrat po e-mailu, do tohohle vlákna to nepatří.
- 22
- Člen | 1478
tohle je zrovna vyjímka tedy, pokud mam český web nebudu tam přece cpát anglické názvy a pak dělat překladvou tabulku pro router, radši presentery pojmneuju rovnou česky! Než budeš frameworku víc rozumět, tak se prosím omez jen na opravy překlepů apod.
Editoval 22 (31. 8. 2011 12:27)
- petr.pavel
- Člen | 535
@22: Teď ti nerozumím. Co jsem tedy udělal špatně? Vždyť komentář „nové URL“ neodpovídal definici toho nového url. Koukni do historie, měnil jsem jen Route(), ne komentář.
Vůbec s tím nesouvisí, jestli je to česky nebo anglicky. Nevím, proč to HosipLan napsal do tohoto vlákna. Jestli to chcete dál rozebírat, pište mi prosím rovnou nebo založte nové vlákno. Tohle je topic hijacking :-)
A k tomu „počkej, až tomu budeš rozumět“ mám dvě poznámky:
- Jak poznám, že už tomu teda fakt opravdu rozumím? Ty Nette rozumíš? Fakt?
- Až tomu budu rozumět, tak se nebudu zpátky vracet a opravovat dokumentaci v místech, kde jsem jako začátečník nechápal, o čem je řeč. Opravovat se to musí hned, jinak to už nikdo neudělá, není čas. Jasně, že občas napíšu blbost a někdo to po mě musí opravit (díky Honzo), ale dělám co proto, abych se tomu vyhnul.
- Nox
- Člen | 378
+1 proti češtině v tomto případě – patlání dvou jazyků
Narážků na cool a profi tady nechápu – vše kromě pár prvků by bylo v angličtině a ta trocha česky? Spíš to mě přijde podivné… getClanek, ObjednavkaModel – tobě to nezní divně? Pokud by bylo komplet česky (vratClanek?), stejně je SPL, Nette a všechny další knihovny, anglicky.
Navíc který programátor neumí anglicky? U kodéra dejme tomu, i tam je to na hraně dost, ale u programátora…
Až pak bude člověk chtít třeba něco diskutovat s někým z ciziny, překládat celý kód…
navíc česká diakritia – má navíc tu vlastnost že názvy s různou dikrakritikou (bez/s/jen někde) mají různé významy
angličtina se prostě pro toho nesrovnatelně víc hodí a pasuje tam
العربية = new عربي/عربى($ローマ字);
Editoval Nox (31. 8. 2011 12:49)
- 22
- Člen | 1478
@petr.pavel: proč měníš produkt na product?? Já chci mít v URL produkt, ne product, taková změna je vhodné akorát v anglické verzi dokumentace.
Kdy člověk rozumí Nette? To je těžká otázka, pokud to mám brát jako komplet, tak rok mi nestačil zatím :-)
Ale ani teď si nedovolím v dokumentaci opravovat kod, o kterém si nejsem na 100% jistý, že je to buď starý zápis nebo že je to překlep v kodu.
Jednoduše řečeno, Nette asi umíš/rozumíš, když dokážeš odpovědět na 90% všech dotazů tady na fóru :-)
Editoval 22 (31. 8. 2011 13:20)
- 22
- Člen | 1478
odkaz v příspěvku vede do české dokumentace
Původně tam bylo Route(‚produkt/<id>‘, což neodpovídalo komentáři nad tím. Z příkladu mi nevyplývalo, že by se jednalo o českou alternativu url k anglické. Proč si to myslíš ty?
Je mi to jasné z toho příspěvku a reakce HosipLana, takže
produkt
tam bylo záměrně a není důvod ho v routě
měnit..
- Filip Procházka
- Moderator | 4668
<ot>
Že tomu rozumíš poznáš tak, že po tobě nebude muset nikdo opravovat faktické chyby
Pokud budeš mít příště nápady na doplnění příkladů, založ
stránku na adrese https://blog.nette.org/, rád ti ji
zkontroluji.
</ot>
- Patrik Votoček
- Člen | 2221
Mezi programátory obecně je nepsané pravidlo že se zdrojové kódy píšou anglicky. Nikdy nevíš jestli se firma / projekt nerozroste za hranice a pak za to budeš jedině rád u OSS je to pak samozřejmost.
Texty stringů (jako například i maska routy) jsou něco jiného. Nebudu přece do flashmessage na českém webu psát anglický text.
Resumé: Měl jsi opravit komentář nikoli masku.
- petr.pavel
- Člen | 535
Názvy proměnných: ok, je vás rozhodně většina :-) Doplnil jsem do pokynů k psaní dokumentace
OT Routing: Příklad ukazoval jak postupovat při přesměrovávání ze starého, již neplatného url na nové. Nešlo o jazyky, mohlo to být klidně z brekeke/id na abrakadabra/id. „produkt“ není český překlad anglického „product-info“.
- Majkl578
- Moderator | 1364
Jistě že anglicky.
<?php
/**
* Zaváděcí soubor Mojí Aplikace.
*/
use Nette\Diagnostika\Debugovač,
Nette\Aplikace\Směrovače\Cesta;
// Načíst Nette Framework
$parametry['knihSložka'] = __DIR__ . '/../knih';
require $parametry['knihSložka'] . '/Nette/načítač.php';
// Zapneme Nette Debugovač pro vizualizaci a zaznamenávání chyb
Debugovač::$záznSložka = __DIR__ . '/../zázn';
Debugovač::$striktníMód = TRUE;
Debugovač::zapnout();
// Načteme konfigurační soubor ze souboru konfigurák.neon
$nastavovač = new Nette\Nastavovač;
$nastavovač->kontejner->parametry += $parametry;
$nastavovač->kontejner->parametry['dočSložka'] = __DIR__ . '/../doč';
$kontejner = $nastavovač->načtiKonfigurák(__DIR__ . '/konfigurák.neon');
// Nastavíme směrovač
$směrovač = $kontejner->směrovač;
$směrovač[] = new Cesta('úvod.php', 'HlavníStrana:výchozí', Cesta::JEDNOSMĚRNÁ);
$směrovač[] = new Cesta('<prezentovač>/<akce>[/<id>]', 'HlavníStrana:výchozí');
// Nastavíme a spustíme aplikaci!
$aplikace = $kontejner->aplikace;
//$aplikace->chytejVýjimky = TRUE;
$aplikace->chybovýPrezentovač = 'Chyba';
$aplikace->spusť();
- hAssassin
- Člen | 293
@Majkl578 > tyjo tak to je bomba! :-D Asi vsechny zdrojaky prepisu do cestiny a rovnou i s diakritikou…
Ne vazne, pouzivani ceskych promennych je zlo a michani cestiny a anglictiny jeste vetsi (ikdyz se musim priznat ze komentare mam cesky bez diakrity – ale to je prezitek z byvalyho zamestnani).
- Tomáš Votruba
- Moderator | 1114
@Majkl: Pěkné :)
Z kognitivního hlediska (aneb jak si ušetřit čas) je v našem případě (Čechů) vhodné používat na delší (= víceřádkové či dle jiného pravidla) komentáře/dokumentaci češtinu, jelikož se v mateřském jazyce čtou delší úseky lépe (rychleji). Naopak pro kód/proměnné je dobré používat angličtinu, jelikož k danému slovu nevede toliko pojítek, tudíž se konkrétní význam v kontextu vybaví rychleji (k order máme jistě méně asociací než k objednavka, navíc doplňovat diakritiku je další zbytečná zátěž mozku).
@petr.pavel: Obecně, dokud si nestanovíš pravidla, budeš mít chaos. Budou-li to pravidla logická (viz spoustu argumentů výše), půjde vše snadno a rychle. Budeš-li o tom neustále filosofovat, ztratíš spoustu času kolem kódění, místo samotného kódění. A my s ním :)
Editoval Schmutzka (1. 9. 2011 2:04)
- Pavel Kouřil
- Člen | 128
Osobně se z kódu snažím v kódu nemít nic česky, protože se mi to prostě nelíbí. A ne, ani v phpDocu v metodách. Nejenže si člověk zlepšuje angličtinu (občas si nějaké to slovo dohledat musíte), ale taky to udržuje jakousi systematičnost a jednolitost.
Proměnné a komentáře česky (pokud to není kód vyloženě za účelem naučit se _základy_ programování) by pro mě osobně byl nezvyk jak prase (a měl bych nutkavou tendenci to refactorovat na angličtinu).
- petr.pavel
- Člen | 535
@Schmutzka: Není mi jasné, proč myslíš, že jsem si nestanovil
pravidla. Tahle diskuse je právě o tom.
Sám v projektech pro Čechy používám češtinu, pro cizince pak
angličtinu.
@mkoubik + @Nox: Já takové projekty znám. getObjednavka() a new Clanek() mi blbé nepřipadají. Naopak.
@Majkl578: Názorný příklad, díky, že sis s ním dal práci. Nevím jestli schválně, ale přešvihl's to do druhého extrému. Nette usiluje o rozšíření i mimo ČR, takže zdrojáky Nette by jednoznačně měly být celé v angličtině. Já jsem mluvil o proměnných v příkladech české dokumentace.
Vezměte si třeba příklad z NotORM. Není jasné, jestli application je nějaké jádro mé aplikace nebo NotORM. A hele, ona je to jen databázová tabulka s nešťastným názvem.
$applications = $db->application()
->select("id, title")
...
David (nebo kdo) naštěstí správně vyměnil aplikace za knihy, ale ještě srozumitelnější by to celé bylo s českými názvy databázových tabulek a atributů.
{foreach $db->table('kniha')->order('nazev')->limit(5) as $kniha}
<h2>{$kniha->nazev} ({$kniha->autor->jmeno})</h2>
{foreach $kniha->related('kniha_znacka') as $znackaKnihy}
{$znackaKnihy->znacka->nazev}{sep}, {/sep}
{/foreach}
{/foreach}
Hned je vidět, co je systém a co data. Uvažujte z pohledu začátečníka. Stojí před neproniknutelnou hradbou vzájemně propojených informací a neví, kde začít. Bude vděčný, když mu ušetříte čas.
@gmvasek + @redhead: Právě proto se zastávám knih, které češtinu pro data používají. I pro funkce.
Nejsem si jistý, jestli je možné přijmout argument, že je něco nezvyk. V běžné řeči taky používám anglicismy a jiné patvary, které ale do dokumentace nepatří. Kriteriem by nemělo být, jak snadno se mi to píše, ale jak snadno je text pochopitelný.
Nikdo z vás nepoukázal, že čeština má delší slova, což srozumitelnosti ubírá. Tímto směrem by se měla ubírat argumentace. Ne, že je něco „ošklivé“ – na to má každý jiný názor.
Editoval petr.pavel (4. 9. 2011 15:59)
- Filip Procházka
- Moderator | 4668
@**petr.pavel**:
getObjednavka() a new Clanek() mi blbé nepřipadají. Naopak.
v tom případě se s tebou není dál moc o čem bavit :)
Vezměte si třeba příklad z NotORM. … ona je to jen databázová tabulka s nešťastným názvem.
Nevidím jediný důvod, proč by se jakákoliv tabulka nemohla jmenovat
applications
.
- Nox
- Člen | 378
Tady myslim šlo petr.pavlovi o to, že by si nováček teoreticky mohl myslet že $db objekt má vazbu na nějaký objekt Application… což je sice podivné a nevím jestli by takový člověk byl vůbec ve fázi vhodné pro použití Nette (to není elitismus, každý se musíme učit), ale není to zase tak úplně mimo
- Majkl578
- Moderator | 1364
petr.pavel napsal(a):
@mkoubik + @Nox: Já takové projekty znám. getObjednavka() a new Clanek() mi blbé nepřipadají. Naopak.
Název metody getObjednavka
je podle mě ideální příklad
toho, jak ošklivé je kombinovat češtinu a angličtinu na jednom místě.
Podobně jako např. ObjednavkaControl
. :)
@Majkl578: Názorný příklad, díky, že sis s ním dal práci. Nevím jestli schválně, ale přešvihl's to do druhého extrému. Nette usiluje o rozšíření i mimo ČR, takže zdrojáky Nette by jednoznačně měly být celé v angličtině. Já jsem mluvil o proměnných v příkladech české dokumentace.
Jistěže schválně. Chtěl jsem poukázat na to, jak může být český kód odpudivý.
Nox napsal(a):
Tady myslim šlo petr.pavlovi o to, že by si nováček teoreticky mohl myslet že $db objekt má vazbu na nějaký objekt Application… což je sice podivné a nevím jestli by takový člověk byl vůbec ve fázi vhodné pro použití Nette (to není elitismus, každý se musíme učit), ale není to zase tak úplně mimo
Takovéhle potencionálně zavádějící pojmenování by se buď neměly používat vůbec, nebo by v předchozím textu / komentáři měly být jasně vysvětleny.