Latte, ukončovanie: if / ifset / ifCurrent
- na1k
- Člen | 288
Proč hardcore? Dobrým zvykem je bloky uzavírat. Navíc v Latte nejde
praktikovat přístup „první příkaz za ifem bez bloku tvoří jeho blok“.
Pokud se ti nechce psát všechno do bloků, doporučuju zkusit n:
makra ;-)
Edit: Omlouvám se, pochopil jsem to špatně. Tip na n:
makra
ale zůstává :)
Editoval na1k (11. 11. 2010 13:22)
- Tharos
- Člen | 1030
Já taky. Štve mě, že v současné dokumentaci se používá
{ifset $var}...{/if}
. Když jsem kdysi s tímto makrem přišel do
styku, měl jsem tendenci jej používat stylem
{ifset $var}...{/ifset}
, ale pak jsem koukal, že v dokumentaci je
k vidění ten kratší zápis. Tak jsem si řekl, že OK, že to teda budu
používat v té zkrácené verzi, a teď abych všechno přepisoval…
- David Grudl
- Nette Core | 8227
{/ifset}
se ještě dá přežít, ale {/ifCurrent}
je teprve opruz :-(
(na druhou stranu, ten by šel nějak řešit automatizovaně přes n:href)
- Tharos
- Člen | 1030
Pro mě to má spojitost ještě s jednou věcí, která mě na Nette šablonách s odpuštěním štve. :) Na řadě míst je velká benevolence v tom, jak lze to a to zapsat. U makra link může, ale nemusí být mezi destination a parametry čárka, klíče parametrů mohou i nemusí být v uvozovkách a podobně. Vede to k tomu, že to každý píše nějak jinak a není to jednotné. Tam je IMHO taková benevolence zbytečná, klidně bych tam tu čárku vyžadoval.
No a na místech, kde by namísto použití {/ifset}
či
{/ifCurrnet}
mělo praktický význam použití {/if}
(příjemně kratší kód), se to najednou zakazuje. Děsný… :)
Editoval Tharos (11. 11. 2010 15:19)
- grey
- Člen | 94
Tharos wrote:
Pro mě to má spojitost ještě s jednou věcí, která mě na Nette šablonách s odpuštěním štve. :) Na řadě míst je velká benevolence v tom, jak lze to a to zapsat. U makra link může, ale nemusí být mezi destination a parametry čárka, klíče parametrů mohou i nemusí být v uvozovkách a podobně. Vede to k tomu, že to každý píše nějak jinak a není to jednotné. Tam je IMHO taková benevolence zbytečná, klidně bych tam tu čárku vyžadoval.
No a na místech, kde by namísto použití
{/ifset}
či{/ifCurrnet}
mělo praktický význam použití{/if}
(příjemně kratší kód), se to najednou zakazuje. Děsný… :)
+ motherfucking 1
přesně nad tímhle jsem už párkrát přemýšlel… taky bych dal latte jasný pravidla…
- David Grudl
- Nette Core | 8227
Tak to se musím velice ohradit! Latte syntax prošla dlouhým pragmatickým vývojem a dnes (poslední revize) jsou její pravidla jasná, konzistentní a jednotná. Že lze něco zapsat více způsoby je docela jiná věc. To je jako se syntaxí programovacího jazyka.
Kdyby byla povinná čárka za prvním tokenem v makru link (a také include, block, control), zdroják filtru by se mírně zjednodušil, ale nejsem si jist, s jakým nadšením by taková úprava byla přijata.
Tharos napsal(a):
No a na místech, kde by namísto použití
{/ifset}
či{/ifCurrnet}
mělo praktický význam použití{/if}
(příjemně kratší kód), se to najednou zakazuje. Děsný… :)
A přitom tohle bylo odstranění poslední nejednoznačnosti. Takže jásejte :-)
- PaBi3
- Bronze Partner | 62
David Grudl napsal(a):
Kdyby byla povinná čárka za prvním tokenem v makru link (a také include, block, control), zdroják filtru by se mírně zjednodušil, ale nejsem si jist, s jakým nadšením by taková úprava byla přijata.
Asi s takým istým nadšením, ako {/ifset}
a
{/ifCurrent}
:-(
- Honza Marek
- Člen | 1664
S {/ifset}
a {/ifCurrent}
se mé oko estéta
nemůže smířit. S tim ifsetem je to jasný… buď ho budu používat jako
n:ifset
nebo klasicky {if isset(...)}
. Bohužel
{ifCurrent}
nemá žádnou alternativní syntaxi. Nešla by
zavést? Nějaké cca {if $control->isCurrent(...)}
by se hodilo
i pro případ negace podmínky či použití v presenteru.
- Tharos
- Člen | 1030
David Grudl napsal(a):
Tak to se musím velice ohradit! Latte syntax prošla dlouhým pragmatickým vývojem a dnes (poslední revize) jsou její pravidla jasná, konzistentní a jednotná. Že lze něco zapsat více způsoby je docela jiná věc. To je jako se syntaxí programovacího jazyka.
Tušil jsem, že se asi neshodneme. :) Ale uzavřel bych tento OT ještě
následující úvahou: různé alternativní syntaxe u programovacích jazyků
často mají svá opodstatnění. Třeba konstrukce
if (expr): ... endif;
má jasný přínos. Pak je v pravém slova
smyslu alternativní syntaxí snad jen to, že jeden příkaz statementu mohu
či nemusím obalit do složených závorek. Nic ve smyslu: „Zde můžete, ale
nemusíte psát čárku, tady zase můžete klíče dát do uvozovek, ale
vlastně nemusíte. Tady můžete použít ‚=>‘, ale vlastně stačí
jen ‚=‘.“
U programovacích jazyků, které nabízejí více coding stylů, alternativní zápisy ještě beru (ale jak říkám, většinou se nejedná o rovnocené zápisy v pravém slova smyslu a mají nějaký význam), ale u frameworku pro ně opodstatnění nevidím. Navíc Latte syntaxe mi přijde ještě benevolentnější, než syntaxe PHP. :)
Přijde mi, že negativa toho převažují: nejednotnost napříč projekty, nejednotnost v rámci projektu, ve kterém se vystřídalo více vývojářů… Vím, že to je o disciplíně v rámci týmu, ale je to pak práce navíc. Jaké jsou výhody těch mnoha způsobů zápisu?
Plus mám k tomu dotaz. :) Který Latte coding style je nejlepší, doporučovaný? U kterého mám největší šanci, že budu kompatibilní s ostatními vývojáři?
Neber můj názor jako útok! Chraň pánbůh. :)
Editoval Tharos (11. 11. 2010 22:20)
- arron
- Člen | 464
Ja jsem presvedceny, ze cim ten blok zacne ({ifCurrent}
), tim by
mel skoncit ({/ifCurrent}
). Je to sice o neco delsi, ale nakonec
je to v kodu daleko prehlednejsi a skoro bych rekl, ze i ruzne napovidaji a
kontroly syntaxe se budou v tom netbeans pluginu o dost zjednodusit. Je to tak
v html, tak proc by to nemohlo byt tady. Je to break, ale opravit to zase
nebude nic az tak zasadniho.
Co se tyka te benevolence zapisu, tak bych skoro rekl, ze to David udelal hlavne proto, ze si sam nepamatuje, jak se to ma spravne psat, tak chce mit vic moznosti, aby se trefil :-D (no offence :-)) Nicmene bych rekl, ze by nebylo uplne od veci tuhle benevolenci trosku utahnout a udelat proste jenom jednu moznost zapisu tam, kde je to mozne. Jednak se asi zkrati doba parsovani, zjednodusi se kod a bude to zase o neco prehlednejsi. Bude to pravdepodobne slusny a osklivy break, ale mam takovy pocit, ze se to driv nebo pozdeji stejne stane, a tak radeji ted (kdyz je tech breaku vic s novou verzi), nez pozdeji.
- David Grudl
- Nette Core | 8227
Ale tam skutečně žádná nejednoznačnost není. Všechny makra používají stejný tokenizér. Preferovaný zápis je vždy ten nejstručnější (proč jinak by byly třeba uvozovky volitelné?)
Navíc Latte syntaxe mi přijde ještě benevolentnější, než syntaxe PHP. :)
Pochopitelně, to je snad každému zřejmé.