« 1 2
Autor Zpráva
Casero
Profil
Retal
jo..slyšíš to :-D...ne...tak jako mě to jen zpřehlednuje kod, jinak to tam nemá žádný význam....a nějaký jiný řešení asi není..aby se mohl část kodu opakovat na vzájemně nesouvislích místech kodu
Retal
Profil
thingwath
Nemá smysl bavit se na takto obecné úrovni. Zcela konkrétně: Nahrazovat kusy opakujícího se kódu eval()-em je znakem chybného návrhu, řešením, které odstraňuje symptomy ale ponechává příčiny.
thingwath
Profil
Je pravda, že v tomto případě to taky nevnímám zcela pozitivně, ale nepřijde mi to jako nějak zásadní zlo.
Casero
Profil
Retal
thingwath
oba říkáte že to není OK..a jak to teda děláte vy?...když to fakt nejde cyklem, funkcí..a opakuje se to ta často?
thingwath
Profil
Jestli to je určitý vzor v kódu co se často opakuje, určitě se dá nějak abstrahovat, není potřeba ho pokaždé opakovat. (jinak, nevím přesně o jaký program se jedná a co má jako celý dělat, stačilo by to obecně popsat)
Retal
Profil
thingwath
Dobře, není to "zásadní zlo", ale jen "zlo". :-)

Casero
Nedělej okolky a ukaž konkrétní část kódu. Něco nás napadne.
minimal
Profil *
ani include() sa mi nezda najhorsie riesenie...
nightfish
Profil
minimal
to jo, ale Casero tvrdil, že takovýchto kousků kódů je hodně, což by vedlo k potřebě mít hodně souborů na includování...
Casero
Profil
minimal
njn..jen mi to přišlo zbytečný kvuli pár řádkům vytvoit třeba 100

thingwath & Retal
no on ještě ten kod něja uplně není....pač zatím zjištuju jak na něj..ale obecně kdybych to měl popsat..tak je to výpočet války ve kterém probíhaj boje, a třeba hned na začátku války umře voják..tzn několi řádků kodu..(.smazní s db, uprava legie, uprava sili legie..atd)..no a samořejmě se válčí dál...a opět muže někdo zemřít, samozřejmě mimo jiné věci co se dají dělat ve válce.no a opět se bud eprovádět stený kod.tak proč ho ít v kodu 2x a nezkrátit ho evalem,include nebo něčí takovým..jen pro přehlednost, ne pro fci
thingwath
Profil
Casero
No, tohle upřímně začíná špatným návrhem vonět i mně.
minimal
Profil *
akoze 100?
predsa tych par riadkov co sa stale opakuje vlozis do toho suboru ktory potom includnes kde potrebujes, nie?
habendorf
Profil
Vytvořit fci killTheSoldier() a tu volat, ne? Nebo mi něco uniká?

Psát kód znovu pro každou mrtvolku, to by ses asi upsal než bys povraždil celej batalion :o)
thingwath
Profil
minimal
To je skoro to samé, navíc by to tady byla plus režie na načítání souborů, s tím evalem by to mohlo být efektivnější. Ale nevím.
Casero
Profil
thingwath
no a jak jinak?

habendorf
no to sme chtěl..a to bych měl problémy s tím, že do toho leze dost udaju z toho kodu (čislo legie, kde stoji, proč zemřel, jak zemřel...) a tayk z toho něco vyhází (že jich je v te legii min, atd...) no a proto funkcí to bych si taky asi dal tolik věcí tam dt jako prametr, a pak eště do pole dat ty výsledky..a typak dostávat s too pole...a proto mi ten eval docela přišel dobrej..ale každej říká, že to zavání špatným návrhem tak nevím, no..
thingwath
Profil
Casero
Tohle bude slušný špagetový kód, za chvilku nepoznáš co kde ovlivňuje co :-) Já na tohle sotva navrhnu něco lepšího. Předně mi tedy přijde, že zapisovat změnu v řádu úmrtí jednoho vojáka do databáze je celkem plýtvání. Stačí zapsat výsledek celého výpočtu. Vlastně by to v mnoha ohledech bylo výrazně lepší.
Casero
Profil
thingwath
jj..je to solidní špagetový kod :-D...no právě do tedka to taky tak bylo, ale tak nešlo získat statistiky typu kde umřel nejvíc vojáku, a jakým způsobem, který z vojáku zemřel nejdřív..jak postupně lehali...atd..prostě statistiky si to vyžádali...i dyž je to neuměrně složitější
thingwath
Profil
No, teď už jsem si špatným návrhem takřka jistý.
Casero
Profil
thingwath
tak to je supr...uvědomuju si, že je něco špatně..ale jak to ted jinak navrhnout??...ha??...to že to není dobře, dokáže říct každej
thingwath
Profil
Jistě, ale já stále opravdu netuším co vlastně děláš. Jenom, že detaily z toho plynoucí neděláš dobře :-)
Casero
Profil
thingwath
:-D ok...no jde o výpočet války...a moc teda nevím jak jinak ji udělat než tímto složitým postupem, kter si vyžduje složitost te války...ale nevím jak to tedy udělat jinak, jednodušeji..nebo o myslíte tím, že to dělám špatně...prostě si ani neumím představit jiný způsob
koudi
Profil
:-D ok...no jde o výpočet války...a moc teda nevím jak jinak ji udělat než tímto složitým postupem, kter si vyžduje složitost te války...ale nevím jak to tedy udělat jinak, jednodušeji..nebo o myslíte tím, že to dělám špatně...prostě si ani neumím představit jiný způsob
Spíš mám pocit, že sed pustil do něčeho, na co nemáš. Neber to nijak špatně, ale rozhodně to na mě tak působí.
djlj
Profil
Casero
Už tady pár lidí psalo, abys popsal problém podrobněji. A tys několikrát odpověděl, že jde o „výpočet války“. Myslíš, že to někomu něco řekne?
Casero
Profil
koudi
no já spíš myslím, jako že s uděláním nebudu mít problém, jn to bude dost sedláckým způsobem
Casero
Profil
djlj
no to ne..ale asi si umí představit co vše by se tam ěmlo počítat, když sme uvedl ten krátký př. výpočet války ve kterém probíhaj boje, a třeba hned na začátku války umře voják..tzn několi řádků kodu..(.smazní s db, uprava legie, uprava sili legie..atd)..no a samořejmě se válčí dál...a opět muže někdo zemřít, samozřejmě mimo jiné věci co se dají dělat ve válce.no a opět se bud eprovádět stený kod.tak proč ho ít v kodu 2x a nezkrátit ho evalem,include nebo něčí takovým..jen pro přehlednost, ne pro fci
djlj
Profil
umře voják..tzn několi řádků kodu..(.smazní s db, uprava legie, uprava sili legie..atd)
Proč ho mazat? Proč u něj jen nenastavit, například ve sloupci zivy nulu (tuším, žes tu psal, že bys ho pak vkládal do tabulky „mrtvých“)? A pak jak jsi tu psal, že by pro každého vojáka byl speciální kód na smazání - proboha proč?

Vlastně ani nevím, proč jsi tam cosi začal řešit tím evalem, podle mě je to úplně zbytečný, vystačíš si s nějakou fcí, kterou budeš dokola vyvolávat. Ale to už jsem vlastně psal. Dělej, jak myslíš, nicméně mi to připadá tak, že v tom máš strašný chaos, máš špatný návrh databáze a začínáš psát i špatný (zbytečně složitý) kód.
thingwath
Profil
No, popsal bych co se má udělat, ne jak to teď konkrétně děláš. Takže třeba víš, že máš x vojáků a chceš spočítat ztráty s použitím pravidel, která zní takto a takto. Co má kdo z tohoto vypozorovat.
Casero
Profil
djlj
to už jednou psal, bylo by to mnohem složitějí než tím evalem
no to sme chtěl..a to bych měl problémy s tím, že do toho leze dost udaju z toho kodu (čislo legie, kde stoji, proč zemřel, jak zemřel...) a tayk z toho něco vyhází (že jich je v te legii min, atd...) no a proto funkcí to bych si taky asi dal tolik věcí tam dt jako prametr, a pak eště do pole dat ty výsledky..a typak dostávat s too pole...a proto mi ten eval docela přišel dobrej..ale každej říká, že to zavání špatným návrhem tak nevím, no..
Casero
Profil
thingwath
heh..no já vím jak ty to myslíš..prostě spočítat to jendoduše z toho co mám...jo toby bylo vhodný..jenže ono se to má pak nějak nasadit na flashovou animaci, která má přímo vycházet s průběhu te války..jenže kdyby došlo jen k nějakému toretickému výpočtu od zadu...tak by to pak bylo mnohem složitjší, aspon podl mého mladého usudku
Casero
Profil
thingwath
a jiank kdybych ěml uvest co chceš, tak ám tabulkus jmenem, a kvalitama vojáku..prostě jak sou dobří v které zbarni..atd..a pak tabulky s out sovisející, kde jsou statistiky...tzn..v kolika byl bitvách, jak tamy byl uspěšný..atd...no..a ty statistiky se v každe bitvě usí mětit...tzn...že počítám "každý jeho krok"
DoubleThink
Profil *
Začínáme se odklánět od tématu.
Možná to budu po někom opakovat, ale problém bych uzavřel tímto:

Funkce slouží ke zpřehlednění kódu a jeho zjednodušení (definováním opakujících se rutin a jejich následným voláním).
Taky eval z části vyhovuje této definici.
Funkce má ale některé důležité vlastnosti:
* má vlastní oblast proměnných - ty se tedy nemíchají (pokud nechceme) do ostatního programu a naopak
* funkce může mít vstupní atributy (ať už jako přímou referenci nebo kopií proměnné) - jejich hodnoty pak jdou používat (upravovat) uvnitř
* funkce může vracet hodnoty

Pak už je jenom krůček ke třídám, kdy funkce seskupíš do třídy a stanou se z nich metody s mnohem širšími možnostmi nastavení a interakce.
« 1 2
Toto téma je uzamčeno. Odpověď nelze zaslat.