Tak trochu flamu:
Dřív jsme se nikdy nepozastavovali nad tím, že si musíme většinu kódu napsat sami.
Jistě, ani já jsem se v dávných dobách nepozastavoval nad tím, že si pro velké pole musím alokovat diskovou stopu a vyřešit si "swapování" mezi diskem a 64 KB RAM. Možná jsem líný programátor nové doby (nikoliv už mladý), ale to, že se mi o swapování nyní stará OS (a v 99.9 % naprosto uspokojivě), mi zcela vyhovuje a netoužím mít nad tím plnou kontrolu. BTW, jak můžete dělat v Javě, když tam nemůžete nijak zvlášť moc ovlivnit správu paměti (GC)? Nebylo by lepší staré dobré C, kde máte nad alokací a uvolňováním paměti plnou kontrolu (malloc a free)?
A na společné věci si každý normální programátor napíše v krátkém čase své jednoduché knihovny, které jsou jeho stylu práce šité na míru.
Většina webových (a asi i mnoho newebových) aplikací pracujících s relačními databázemi s výhodou užije ORM. Nemyslím, si, že by bylo rozumné a efektivní, aby si to psal každý sám pro všechny možné databáze, přesto že by měl pak nad tím plnou kontrolu.
Tvrzení, že v šablonách mohou být ify a whily, je zcela nesmyslné.
Doporučuji výborný teoretický článek http://www.cs.usfca.edu/~parrt/papers/mvc.templates.pdf o tom, co je a není nutné v template enginech. Implementace těchto myšlenek jako "minimální" rozumné template engine je pak StringTemplate a stejně je tam if a v podstatě i cyklus (tedy jen foreach, nikoliv while)
Tu první námitku jsem nějak nepochopil, stačí přece změnit atribut method v xsl:output. Máte tam druhou verzi, která generuje XML - sice se z nějakého důvodu v Mozille nezobrazí XML struktura, jenom vlastní text (asi se s XSLT počítá hlavně pro generování HTML), ale stačí si zobrazit zdrojový kód výběru a uvidíte ji.
Já přece nepopírám, že XSLT je ukecané, také ho obvykle na generování HTML na serveru nepoužívám, protože znám lepší způsoby jak trávit čas. Jenom jsem opravoval váš argument očividně vycházející z neúplných znalostí.
Na uvod bych rad rekl, ze ocenuji autorovu snahu priblizit RoR "masam". Je to rozhodne zasluzna cinnost ... jen mi prijde, ze by to slo udelat s mensim mnozstvim chyb.
Pokusim se popsat jen nektere z nich (ty do oci bijici):
Nevim, jestli to byl autoruv zamer a nebo proste jen "prehmat", ale ten priklad se zkracovanim metod je syntakticky nespravny. I kdyz bych akceptoval, ze si autor vymyslel metodu checkbox
, ktera v RoR API neexistuje (existuji dve podobne -- check_box
a check_box_tag
, ale obe maji uplne jinou signaturu), tak me zarazi zjevna syntakticka chyba -- pouziti lokalnich promennych (checked
, size
) misto symbolu (:checked
, :size
).
Dalsi podivna vec je myslim informace o views. Ve view se nepouziva jen <%=
, ale take <%
a bylo by dobre upozornit na ten rozdil (bez = se vysledek expression nevypisuje do vystupu). Navic by nebylo od veci zminit "h" a jeho vyznam pri ochrane proti XSS.
Dalsi velmi zavadejici informace je myslim: Kontrolér řeší logiku. V podstatě řídí posloupnost zobrazování stránek a výměnu dat mezi nimi. To je myslim uplne "mimo misu". Controller neridi posloupnost zobrazovani stranek. Controller zpracovava requesty uzivatelu, vola metody prislusnych modelu a zobrazuje vysledky volanim prislusnych views. Controller nema tuseni o nejakem "flow" mezi akcemi/strankami.
Za drobny prohresek proti obecne uznavanemu CodingStyle bych navic povazoval i pouziti { ... }
misto do ... end
(v prikladu listovani zaznamu z modelu). Stejne tak pouziti "deprecated" metody find_all
misto find(:all)
pusobi mirne neserioznim dojmem.