• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    TENCOKACISTROMYProgramovani v C#, F# a dalsich jazycich pro .NET, Mono a ostatni CLI implementace
    ANDY_WARHOL
    ANDY_WARHOL --- ---
    TENCOKACISTROMY: diky moc. mrknu na to
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    ANDY_WARHOL: Mozna by ses mohl inspirovat na prikladu ( http://www.codeproject.com/Articles/22952/WPF-Diagram-Designer-Part-1 ) s designerem diagramu. Tomu tvymu to vypada dost podobny a nevypada to nejak zvlast narocne.
    ANDY_WARHOL
    ANDY_WARHOL --- ---
    ahoj lidi. potreboval bych nasmerovat. delam takovou wpf aplikaci, ktera ma sadu kontrolu, ktery sem udelal. a potrebuju vyrobit nejaky designer, ktery umozni userovi aby si ty kontroly v libovlnem poctu vynesl do okna aplikace tam si je rozmistil jak bude potrebovat sam.
    vubec nevim co mam hledat, nejaky jakysi designer, ale kdyz to hledam, tak mi vyleze spousta nepouzitelnyho.
    diky za jakoukoliv uzitecnou informaci
    NECROMAN
    NECROMAN --- ---
    VIRTUALVOID: potrebuji neco stabilniho, co ma zajisteny support a ne alpha projekt 4 roky neudrzovany...
    NECROMAN
    NECROMAN --- ---
    nevite o knihovne pro .NET pro konvertovani grafickych zdroju z .ai nebo .psd do .png?
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    NECROMAN: V tom pripade bych to vubec neresil. Prijde mi to fakt ok. Jestli se nepletu, tak array ICollection<T> neimplementuje, takze timhle obsahnes zdroj dat jak z kolekci, tak z poli. V pripade ze by tam nekdo chtel cpat veci, ktery budou mit promenny vysledky v case tak:
    1) Bud to tak ma bejt a je to ok.
    2) Nema to tak bejt a v tom pripade i kdyby na tom zavolal .ToList(), tak se sice chyba zamaskuje, ale porad tam bude existovat.
    NECROMAN
    NECROMAN --- ---
    TENCOKACISTROMY: u specifickych pripadu bych to chapal, nicmene zde se jednalo o typicke cachovani dat, ktera se pozdeji nemenila. No nic... :)
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    NECROMAN: Jasne, ale taky jsou kolekce, ktery muzes vracet vickrat, ale jsou derefered, takze z toho ICollection udelat proste nemuzes.

    Samo o sobe mi to prijde ok. Neznam okolnosti, ale klidne muzes mit scenar, kdy ta dictionary opravdu ma obsahovat seznam kolekci, ktery vickrat nez jednou neprojdes.

    Nebo naopak muzes mit situaci, kdy tam chces davat vic druhu kolekci a nektera z nich neimplementuje ICollection<T> (napr. BlockingCollection<T>). Pak je imho lepsi pouzit IEnumerable<T> nez negenerickou ICollection<T>.
    PIGSTER
    PIGSTER --- ---
    NECROMAN: prijde mi, ze ale tohle nejde moc na urovni definice toho interfacu vyresit - stejne tak se da tvrdit, ze existujou kolekce, ktery se daj enumerovat vicekrat uplne bez problemu a existuje platnej duvod proc je tam ulozit.
    Navic IMHO ne vzdycky je nutne na zavadu, ze opakovana enumerace vraci ruzny vysledky - je teda fakt ze pak se muzem dogadovat, jestli v takovym pripade tam ma bejt to IEnumerable nebo delegat (kterej teda zase ale vrati IEnumerable), coz me osobne teda prijde jako religiozni detail.
    NECROMAN
    NECROMAN --- ---
    TENCOKACISTROMY: ukladat IEnumerable mi prijde dost spatne uz z principu - jsou kolekce, ktere lze enumerovat jen jednou nebo pokazde s jinym vysledkem, tim padem ta dictionary nezajistuje stabilni opakovatelne nacteni ulozene hodnoty
    SHIGORBIRDMAN
    SHIGORBIRDMAN --- ---
    kolekce kolekci, taky mi na tom neprijde nic az tak prasackyho
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    NECROMAN: Co ti na tom prijde prasackyho?
    NECROMAN
    NECROMAN --- ---
    ted jsem narazil na toto v jednom nasem starsim kodu, take vam prijde prasarna pouzivat jako hodnotu v Dictionary IEnumerable?

    public static Dictionary<String, IEnumerable<MethodInfo>> subscriberLookup
    SIRLOON
    SIRLOON --- ---
    TENCOKACISTROMY: ja pomahal stavet stanek Disney. srandy bylo vic nez dost :)
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    SIRLOON: Tak je to z moji branze, takze bychom se tam meli ukazat :).
    SIRLOON
    SIRLOON --- ---
    TENCOKACISTROMY: no, ono na GDS toho moc svetobornyho nebude. Na W8 a WP toho je minimum a jeste neco v pondeli
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    PJOTRIK: Nauc ji programovat ;)
    PJOTRIK
    PJOTRIK --- ---
    BUTHRAKAUR: to uz by me mlada po minulym vikendu zakousla :-p
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    Bohuzel se mi to bije s GDS :(
    BUTHRAKAUR
    BUTHRAKAUR --- ---
    tak kdo jde v sobotu na CodeRetreat? :)
    PJOTRIK
    PJOTRIK --- ---
    Ted cisty kod, pak ef a testovani ui
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    Asi az na afterparty. Ve 12 jsem teprve dorazil :p.
    Na jaky jdete prednasky?
    PJOTRIK
    PJOTRIK --- ---
    Tak ve 12 v loungi? Nebo az na afterparty?
    NECROMAN
    NECROMAN --- ---
    PJOTRIK: zde, od 15:15 mam prednasku o Windows 8 a pres den jeste musim dodelat samply, ale snad to bude OK :)
    H_U_N_T_E_R
    H_U_N_T_E_R --- ---
    taky se tam budu poflakovat
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    Urcite se mnou a s pigsterem :)
    PJOTRIK
    PJOTRIK --- ---
    Tak s kym se zitra uvidim na MS festu? Hlavne teda vecer, pres den se asi prednaskama docela zabavim
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    BUTHRAKAUR: Tak ono jde o scenar kdy ten test delas. Jestli pri vytvareni nove funkcionality nebo pri refactoringu (kdyz testy na refactorovanou ficuru neexistuji).

    Ja netestuju vsechno. Je hromada veci, pro ktery to nema smysl (napr. obycejny getery, settery) a pri rozsirovani funkcionality proste nekde pribyde metoda, ktera by si ale test uz zaslouzila. Prijde mi pohodlnejsi si tam napsat signaturu ty metody, do ni hodit NotImplementedException a nechat si pro ni vygenerovat torzo testu nez naopak.

    Postup "vytvorit nezkompilovatelnej test, nechat ho nezkompilovat, pak vytvorit metodu, dosahnout tak zkompilovatelnyho testu, a ted teprve psat test" mi prijde zbytecne komplikovanej. Krok 1 a 2 imho muzu rovnou preskocit. Protoze tim neziskam.

    Nemyslim si, ze bych timhle postupem neco realne zlepsil nebo zhorsil Prijde mi to spis, ze to je o osobnich preferencich. Vysledek je imho shodny.

    Tim prejmenovanim metody jsem mel na mysli, ze kdyz v projektu prejmenuju metodu, tak chci aby se mi prejmenovala i uvnitr testu. Cili ne nazev toho testu. Takze kdyz bych k tomu pristupoval pres "dynamic" tak by pri automatickym refactoringu k prejmenovani toho volani v testu nedoslo.

    U testovani privatnich clenu - religiozne spravne by se to nemelo delat. Nicmene nekdy scope dotycny metody je private/protected/internal a ne public z duvodu architektury systemu. Pricemz ale character ty metody je takovy, ze by si ten test zaslouzila. Co pak? Imho je lepsi se "nejak dobouchat" na tu metodu a udelat na ni test, nez ten test nedelat. A nebo tu metodu udelat public a pak se snazit pres dokumentaci prijmout "verejnost" aby ji nepouzivala.
    BUTHRAKAUR
    BUTHRAKAUR --- ---
    TENCOKACISTROMY: ale ze ti test v prvotni fazi nejde zkompilovat, je prece dle TDD spravne - aspon si lip promyslis design :) Potom R# Alt+Enter => vytvorit tridu/metodu atd. S tim neni zadnej problem - zadna velka rucni prace neni nutna. Kdyz zacinas testem, tak proste strukturu trid teprve vymejslis. Testovani privatnich metod je ponekud zvlastni pozadavek a vytvareni mockovacich trid od dob, co existujou dynamicky mockovaci frameworky, taky... Prejmenovavani metod vs test metod taky nechapu - nazev test metody ma prece popisovat, o co v testu jde a nemusi tak s nazvem real metody vubec souviset.

    Ale evidentne zastavame kazdej dost odlisnej pristup k testovani atd - ja tyhle MS auto-generovaci opicarny nikdy nechapal. Nastroje typu R# na rychly psani kodu bohate stacej a ty MS zabudovany veci ostatne i dost vyrazne prekonavaj. Casto dokonce prispivaj i k budovani spatnejch navyku pri vyvoji. Mrkni treba na tohle video o TDD - sice v Jave, ale v .NET je to prakticky o tom samym...
    Kliknutím sem můžete změnit nastavení reklam