Copy & Paste vs. Špagety

Kit

Re:Copy & Paste vs. Špagety
« Odpověď #15 kdy: 16. 07. 2016, 16:44:18 »
Nejjednodušší možné řešení bývá nejčitelnější.

Jenomze to skutecne nejjednodussi reseni da obrovske mnozstvi prace...

Pokud beru v potaz standardní postup řešení
primitivní -> složité -> jednoduché
tak to nejjednodušší je skutečně nejpracnější.


Re:Copy & Paste vs. Špagety
« Odpověď #16 kdy: 16. 07. 2016, 17:10:02 »
Je to jedno. Hlavně, že to bude fungovat.
Což se u kopírovaného nebo špagetového kódu těžko zajišťuje, protože se těžko testuje, těžko čte a těžko opravuje.

Nejjednodušší možné řešení bývá nejčitelnější.
Ano, ale bývá těžké ho vymyslet a naprogramovat.

gl

Re:Copy & Paste vs. Špagety
« Odpověď #17 kdy: 16. 07. 2016, 17:42:40 »
Ještě k formulářům. Záleží jak moc se liší a kolik jich je. Pokud jsou 2 nebo 3, klidně bych copy pastoval. Pokud se liší málo, dá se použít společná šablona s nějakou podmínkou. Pokud se liší hodně, asi bych je skládal z malých šablon pro jednotlivé položky. Na takové věci používám Jinja2 makra. Podobná funkcionalita existuje i jinde. Validaci bych se snažil řešit pomocí kódu navázaným na modely do kterých se ukládá, ale mělo by jít ověřit validitu bez uložení. Záleží na konkrétním formuláři, někdy je nutné validovat formulář jako celek. Tam bych se snažil oddělit kód společný pro všechny formuláře a kód specifický pro jednotlivé typy. Možná bych si někam do databáze ukládal raw post data z toho formuláře pro pozdější kontrolu. Při opravě chyby se použijí uložená post data v testech, aby se chyba neopakovala. Je dobré do jednotlivých formulářů přidat skryté pole s typem formuláře.

Kit

Re:Copy & Paste vs. Špagety
« Odpověď #18 kdy: 16. 07. 2016, 17:58:30 »
Ty části šablony, které potřebuji jinak, jednoduše překryji specializovanou částí šablony, která importuje tu obecnou část šablony. Na to ty importy jsou.

gl

Re:Copy & Paste vs. Špagety
« Odpověď #19 kdy: 16. 07. 2016, 18:14:06 »
Ty části šablony, které potřebuji jinak, jednoduše překryji specializovanou částí šablony, která importuje tu obecnou část šablony. Na to ty importy jsou.

Souhlas. Pokud těch opakujících se částí není moc, je to asi lepší než makra. Některé šablonovací systémy ani makra nemají. V Djangu se dají používat widgety a jednotlivé formy z nich poskládat, ale to mi přijde zbytečně komplikované.


Kit

Re:Copy & Paste vs. Špagety
« Odpověď #20 kdy: 16. 07. 2016, 18:38:28 »
Ty části šablony, které potřebuji jinak, jednoduše překryji specializovanou částí šablony, která importuje tu obecnou část šablony. Na to ty importy jsou.

Souhlas. Pokud těch opakujících se částí není moc, je to asi lepší než makra. Některé šablonovací systémy ani makra nemají. V Djangu se dají používat widgety a jednotlivé formy z nich poskládat, ale to mi přijde zbytečně komplikované.

Ty šablony se dají normálně vrstvit na sebe, podobně jako v OOP při použití dědičnosti. Přednost má vždy speciální komponenta šablony před obecnou. V podstatě není důvod, aby se něco opakovalo.

jinjanoob

Re:Copy & Paste vs. Špagety
« Odpověď #21 kdy: 16. 07. 2016, 18:53:43 »
Jak se dělá import v Jinja?

gl

Re:Copy & Paste vs. Špagety
« Odpověď #22 kdy: 16. 07. 2016, 19:02:51 »
Jak se dělá import v Jinja?

importem jsem myslel include.

Kit

Re:Copy & Paste vs. Špagety
« Odpověď #23 kdy: 16. 07. 2016, 19:10:44 »
importem jsem myslel include.

Některé šablonovací systémy dělají rozdíl mezi import a include. Rozdíl je právě v tom, co je čím překryto.

gl

Re:Copy & Paste vs. Špagety
« Odpověď #24 kdy: 16. 07. 2016, 19:20:03 »
Ty části šablony, které potřebuji jinak, jednoduše překryji specializovanou částí šablony, která importuje tu obecnou část šablony. Na to ty importy jsou.

Souhlas. Pokud těch opakujících se částí není moc, je to asi lepší než makra. Některé šablonovací systémy ani makra nemají. V Djangu se dají používat widgety a jednotlivé formy z nich poskládat, ale to mi přijde zbytečně komplikované.

Ty šablony se dají normálně vrstvit na sebe, podobně jako v OOP při použití dědičnosti. Přednost má vždy speciální komponenta šablony před obecnou. V podstatě není důvod, aby se něco opakovalo.

mám 3 formuláře složené z částí:

část1
část2
část4
část5

část2
část3
část4
část6

část1
část3
část5
část6

Některé části mohou mít stejnou šablonu jen s jinými parametry. Jak se tohle řeší pomocí vrstvení?

Kit

Re:Copy & Paste vs. Špagety
« Odpověď #25 kdy: 16. 07. 2016, 19:38:51 »
mám 3 formuláře složené z částí:
...
Některé části mohou mít stejnou šablonu jen s jinými parametry. Jak se tohle řeší pomocí vrstvení?

Z příkladu není patrné, která část šablony je do které zanořena. Sekvenci různých šablon by mi to odmítlo, protože v každé komponentě podšablony musí být uzavřeny párové závorky - <div> musí být ve stejné komponentě jako příslušný </div> - parser to kontroluje a nepárové či překřížené tagy vyhodnotí jako fatální chybu.

gl

Re:Copy & Paste vs. Špagety
« Odpověď #26 kdy: 16. 07. 2016, 21:28:58 »
mám 3 formuláře složené z částí:
...
Některé části mohou mít stejnou šablonu jen s jinými parametry. Jak se tohle řeší pomocí vrstvení?

Z příkladu není patrné, která část šablony je do které zanořena. Sekvenci různých šablon by mi to odmítlo, protože v každé komponentě podšablony musí být uzavřeny párové závorky - <div> musí být ve stejné komponentě jako příslušný </div> - parser to kontroluje a nepárové či překřížené tagy vyhodnotí jako fatální chybu.

Jaký používáš šablonovací systém? Ty části mohou být jednotlivé položky formuláře. Třeba

Kód: [Vybrat]
<div class="form-group">
    <label for="{{id}}">{{label}}</label>
    <input type="{{type}}" class="form-control" id="{{id}}" name="{{name}}">
  </div>

Každopádně všechny divy jsou vždy otevřené a uzavřené ve stejné části.  Určitě je mnoho způsobů jak tohle řešit. Makra se mi osvědčila asi nejvíc. Jsem v téhle oblasti samouk, rád dovím jiná řešení.

javaman

Re:Copy & Paste vs. Špagety
« Odpověď #27 kdy: 16. 07. 2016, 21:33:21 »

Jaký používáš šablonovací systém?

Že se vůbec ptáš :D

gl

Re:Copy & Paste vs. Špagety
« Odpověď #28 kdy: 16. 07. 2016, 21:39:17 »

Jaký používáš šablonovací systém?

Že se vůbec ptáš :D

Tebe jsem se neptal, ale můžeš odpovědět za něj pokud to víš.

Ivan Nový

Re:Copy & Paste vs. Špagety
« Odpověď #29 kdy: 16. 07. 2016, 21:52:12 »
Na složité logické vazby se už před mnoha lety používaly rozhodovací tabulky. Viz zde http://www.ibm.com/support/knowledgecenter/cs/SSFTDH_8.0.0/com.ibm.wbpm.main.doc/topics/cbrm_dectbl.html