Názvy proměnných v příkladech dokumentace – česky nebo anglicky?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
petr.pavel
Člen | 535
+
0
-

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 :-)
Filip Procházka
Moderator | 4668
+
0
-

Zdrojový kód se píše vždy anglicky. To je nepsané pravidlo.

petr.pavel
Člen | 535
+
0
-

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.

22
Člen | 1478
+
0
-

…aby ti nevznikaly česko-anglické patvary minimálně

mkoubik
Člen | 728
+
0
-

Neznám asi nikoho, kdo by psal proměnné/komentáře/commit messages česky. Hlavní důvod asi je, že getObjednavka(), případně new Clanek() vypadá blbě, navíc se většinou stejně nedá použít diakritika.

22
Člen | 1478
+
0
-

diakritika aspoň v názvech proměnných by použít jít měla → UTF8, ale to je snad ještě větší peklo :-)

petr.pavel
Člen | 535
+
0
-

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
+
0
-

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
+
0
-

@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
+
0
-

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
+
0
-

@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:

  1. Jak poznám, že už tomu teda fakt opravdu rozumím? Ty Nette rozumíš? Fakt?
  2. 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
+
0
-

+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
+
0
-

@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
+
0
-

to není nutné, podstatné asi bylo už rečeno, není potřeba to dál rozmazávat .-)

Editoval 22 (31. 8. 2011 13:29)

petr.pavel
Člen | 535
+
0
-

@22: Naopak, pořád jsi ještě nepochopil, co jsem vlastně opravil a proč :-)

22
Člen | 1478
+
0
-

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
+
0
-

<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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

@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
+
0
-

@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
+
0
-

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).

grey
Člen | 94
+
0
-

Syntaxe jazyka je taky anglicky, už jen kvůli tomu by se měla držet konzistence. A taky neznám ani jednoho člověka, co by používal české názvy proměnných atp.

Aurielle
Člen | 1281
+
0
-

Některé české knihy (vím o pár příkladech od Computer Pressu) překládají ve zdrojáku názvy proměnných a někdy se vyskytne i přeložená funkce… To taky nevede začátečníky tím správným směrem…

redhead
Člen | 1313
+
0
-

V knihách je to naprosto na zabití. V knize Návrhové vzory od Pecinovského jsou i s diakritikou. @#$%^&!!!

petr.pavel
Člen | 535
+
0
-

@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
+
0
-

@**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
+
0
-

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

studna
Člen | 181
+
0
-

Myslím, že snad každého nováčka by trklo to malé schemátko DB. :)

Proměnné, apd. v dokumentaci anglicky. Psát $proměnná..prostě brr. Natož v dokumentaci, z které se mnoho lidí učí..

Editoval studna (4. 9. 2011 16:53)

Majkl578
Moderator | 1364
+
0
-

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.