Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Sponzorem soutěže je:
Kde se koná výstava fotografií Luďka Vojtěchovského?
V dnešní soutěži hrajeme o:

Generovani kolekce objektu (recordu)
|
Re: Generovani kolekce objektu (recordu) Autor: algida 0:46:03 25.05.2011 |
||
Zdravim, Zdravim, pri hledani vhodne literatury ke studiu sem narazil na Release It! Design and Deploy Production-Ready Software od Michael T. Nygard ISBN-10: 0-9787392-1-3 . Neni to uplne nejnovejsi kousek, ale je to pomerne zajimava knizka. Pokud nekdo ma zkusenost pripadne nazor, rad si poslechnu co si o knize myslite :-) A. Dne 24.5.2011 11:40, algida napsal(a): > > Dekuji, > na zdroje informaci se podivam a kod pouziju ne copy paste, ale opravdu > diky moc za nakopnuti spravnym smerem. > > Preju alespon tak hezky den, jako mam ja :-) > A. > Dne 24.5.2011 11:35, RSTEIN napsal(a): >> Rado se stalo, jen to také berte jako rychle reseni, které si mate sam >> upravit a které se hlavne snazilo dodrzovat strukturu vaseho původního kodu. >> Stahente si ten kod opravdu radeji z gistu, ještě jsem ho drobne upravoval >> >> K tem best practices: >> Jako uplny zaklad bych videl, ze vsichni vyvojari umi rafaktorizovat a >> nepisou třeba ty silene metody, co zminujete nize: >> >> http://www.amazon.com/Refactoring-Improving-Design-Existing-Code/dp/02014856 >> 72 >> >> A také je pro zacatek vhodna velmi dobra kniha Clean Code od Roberta C. >> Martina >> http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/01323508 >> 82/ref=pd_sim_b_3 >> >> >> Zdravim >> Rene Stein >> http://blog.renestein.net >> twitter: http://twitter.com/renestein >> >> Příspěvek zaslán emailem > > Příspěvek zaslán emailem Příspěvek zaslán emailem |
Re: Generovani kolekce objektu (recordu) Autor: algida 11:40:44 24.05.2011 |
||
Dekuji, Dekuji, na zdroje informaci se podivam a kod pouziju ne copy paste, ale opravdu diky moc za nakopnuti spravnym smerem. Preju alespon tak hezky den, jako mam ja :-) A. Dne 24.5.2011 11:35, RSTEIN napsal(a): > > Rado se stalo, jen to také berte jako rychle reseni, které si mate sam > upravit a které se hlavne snazilo dodrzovat strukturu vaseho původního kodu. > Stahente si ten kod opravdu radeji z gistu, ještě jsem ho drobne upravoval > > K tem best practices: > Jako uplny zaklad bych videl, ze vsichni vyvojari umi rafaktorizovat a > nepisou třeba ty silene metody, co zminujete nize: > > http://www.amazon.com/Refactoring-Improving-Design-Existing-Code/dp/02014856 > 72 > > A také je pro zacatek vhodna velmi dobra kniha Clean Code od Roberta C. > Martina > http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/01323508 > 82/ref=pd_sim_b_3 > > > Zdravim > Rene Stein > http://blog.renestein.net > twitter: http://twitter.com/renestein > > Příspěvek zaslán emailem Příspěvek zaslán emailem |
RE: Generovani kolekce objektu (recordu) Autor: RSTEIN 11:35:26 24.05.2011 |
||
Rado se stalo, jen to také berte jako rychle reseni, které si mate sam Rado se stalo, jen to také berte jako rychle reseni, které si mate sam upravit a které se hlavne snazilo dodrzovat strukturu vaseho původního kodu. Stahente si ten kod opravdu radeji z gistu, ještě jsem ho drobne upravoval K tem best practices: Jako uplny zaklad bych videl, ze vsichni vyvojari umi rafaktorizovat a nepisou třeba ty silene metody, co zminujete nize: http://www.amazon.com/Refactoring-Improving-Design-Existing-Code/dp/02014856 72 A také je pro zacatek vhodna velmi dobra kniha Clean Code od Roberta C. Martina http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/01323508 82/ref=pd_sim_b_3 Zdravim Rene Stein http://blog.renestein.net twitter: http://twitter.com/renestein Příspěvek zaslán emailem |
Re: Generovani kolekce objektu (recordu) Autor: algida 11:21:32 24.05.2011 |
||
Uhhhh, Uhhhh,
dekuju mooc, uz sem aplikoval reseni s tim ze menim primo vlastnosti
row, nelibilo se mi to, konecne dneska budu mit z prace taky radost.
Hned si to nastuduju a zatepla upravim svuj kod.
Zacal sem totiz tak nejak hledat jake jsou overene praktiky pri
programovani a z hruzou sem zjistil, ze delame 90% tak jak by se nemelo :-)
Drive sem Unit Testy povazoval za pomerne peknou moznost testovani kodu,
bohuzel se u nas ve firme na podobne veci nahlizi jako na ztratu casu,
tak sem si zacal psat svoje testy bokem pouze z duvodu uceni se. No a
musim rict ze prozatim vice nez otestovani casti aplikace se mi zamlouva
to, ze me to nuti psat pruhlednej a citelnej kod, coz pri pohledu do
nasich zdrojovych kodu je opravdu rozdil. Nejsou vyjimkou tridy ktere
maji 1000+ radek pricemc 80% tridy tvori 2-3 metody :-)
Jeste jednou dekuju mnohokrat. a kdyby bylo mozne Vas poprosit o nejaky
zdroj best practices budu velmi vdecny.
Ales.
Dne 24.5.2011 10:50, RSTEIN napsal(a):
>
> Dobry den,
> ten popis je trochu zmateny;), ale pokusil jsem se vyjit z toho, co jste mi
> naznačil a také jsem viděl, že používáte asi C#.
>
> Kod jsem dal i na GitHub (gisty), protože Builder emailové příspěvky sám
> neformátuje.
> http://jdem.cz/nzzx4
>
> Jednoducha trida Row, která se ale tvari jako imutabilni, což znamená, že
> všechny metody pro změnu instance vrací novou instanci (podobně se v .Net
> chová třída string), což mi umožní zachytit všechny změny na konkrétní
> instanci.
>
> using System;
> using System.Collections.Generic;
> using System.Linq;
> using System.Text;
>
> namespace Builder_Algida_Row_Generator
> {
> class Row
> {
>
> public Row(int value1, decimal a, decimal b, decimal c, decimal d,
> decimal e, decimal f)
> {
> Value1 = value1;
> A = a;
> B = b;
> C = c;
> D = d;
> E = e;
> F = f;
> }
>
> public Row() : this(0, 0m, 0m, 0m, 0m, 0m, 0m)
> {
>
> }
>
> public int Value1
> {
> get;
> private set;
> }
>
> public decimal A
> {
> get;
> private set;
> }
>
> public decimal B
> {
> get;
> private set;
> }
>
> public decimal C
> {
> get;
> private set;
> }
>
> public decimal D
> {
> get;
> private set;
> }
>
> public decimal E
> {
> get;
> private set;
> }
>
> public decimal F
> {
> get;
> set;
> }
>
> public Row ChangeValue1(int value1)
> {
> return new Row(value1, A, B, C, D, E, F);
> }
>
> public Row ChangeA(decimal a)
> {
> return new Row(Value1, a, B, C, D, E, F);
> }
>
> public Row ChangeB(decimal b)
> {
> return new Row(Value1, A, b, C, D, E, F);
> }
>
>
> public Row ChangeC(decimal c)
> {
> return new Row(Value1, A, B, c, D, E, F);
> }
>
> public Row ChangeD(decimal d)
> {
> return new Row(Value1, A, B, C, d, E, F);
> }
>
> public Row ChangeE(decimal e)
> {
> return new Row(Value1, A, B, C, D, e, F);
> }
>
> public Row ChangeF(decimal f)
> {
> return new Row(Value1, A, B, C, D, E, f);
> }
>
>
> }
> }
>
>
> Třída RowGenerator generuje řádky a může být parametrizována libovolným
> množstvím delegátů (argument params Func |
RE: Generovani kolekce objektu (recordu) Autor: RSTEIN 10:50:48 24.05.2011 |
||
Dobry den, Dobry den,
ten popis je trochu zmateny;), ale pokusil jsem se vyjit z toho, co jste mi
naznačil a také jsem viděl, že používáte asi C#.
Kod jsem dal i na GitHub (gisty), protože Builder emailové příspěvky sám
neformátuje.
http://jdem.cz/nzzx4
Jednoducha trida Row, která se ale tvari jako imutabilni, což znamená, že
všechny metody pro změnu instance vrací novou instanci (podobně se v .Net
chová třída string), což mi umožní zachytit všechny změny na konkrétní
instanci.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Builder_Algida_Row_Generator
{
class Row
{
public Row(int value1, decimal a, decimal b, decimal c, decimal d,
decimal e, decimal f)
{
Value1 = value1;
A = a;
B = b;
C = c;
D = d;
E = e;
F = f;
}
public Row() : this(0, 0m, 0m, 0m, 0m, 0m, 0m)
{
}
public int Value1
{
get;
private set;
}
public decimal A
{
get;
private set;
}
public decimal B
{
get;
private set;
}
public decimal C
{
get;
private set;
}
public decimal D
{
get;
private set;
}
public decimal E
{
get;
private set;
}
public decimal F
{
get;
set;
}
public Row ChangeValue1(int value1)
{
return new Row(value1, A, B, C, D, E, F);
}
public Row ChangeA(decimal a)
{
return new Row(Value1, a, B, C, D, E, F);
}
public Row ChangeB(decimal b)
{
return new Row(Value1, A, b, C, D, E, F);
}
public Row ChangeC(decimal c)
{
return new Row(Value1, A, B, c, D, E, F);
}
public Row ChangeD(decimal d)
{
return new Row(Value1, A, B, C, d, E, F);
}
public Row ChangeE(decimal e)
{
return new Row(Value1, A, B, C, D, e, F);
}
public Row ChangeF(decimal f)
{
return new Row(Value1, A, B, C, D, E, f);
}
}
}
Třída RowGenerator generuje řádky a může být parametrizována libovolným
množstvím delegátů (argument params Func |
Re: Generovani kolekce objektu (recordu) Autor: algida 16:26:20 23.05.2011 |
||
Dne 23.5.2011 14:46, algida napsal(a): Dne 23.5.2011 14:46, algida napsal(a):
>
> Zdravim,
> rad bych Vas poprosil o nazor, pripadne doporuceni jak se nejlepe poprat
> s nasledujicim problemem.
>
> Potrebuji vygenerovat kolekci radek, kde znam vstupni hodnoty jako pocet
> radek a zakladni informace pro plneni radek.
>
> Nicmene plneni jednotlivych sloupcu v radccich muze zaviset jak na
> hodnotach, ktere byly vlozeny do predchozich radek kolekce, tak na tom,
> jaka hodnota v aktualne plnenem radu je v urcitem sloupci.
>
> Cela metoda plneni radku je pomerne hodne neprehledna.
>
> Problem by se dal vyresit nekolika zpusoby.
> 1. nekolikanasobny pruchod kolekci, pricemz by se vzdy spocetlo cast
> udaju radky. I kdyz nic jineho, tak to alespon zprehledni vypocet.
> Nicmene me trapi predstava, ze vypocetni trida modifikuje
> nekontrolovatelne kolekci radek a tudiz si mohou jednotlive tridy
> zodpovedne za urcitou cast vypoctu menit sloupce. Takze po case by mohlo
> dojit k tomu, ze z neznamych duvodu nekdo upravy cast vypoctu a tim
> rozbije jinou cast vypoctu.
>
> 2. Jeden pruchod kolekci a volani metod zaregistrovanych instanci
> objektu pro jednotlive casti vypoctu. Toto se mi libi, nicmene moc se mi
> nelibi ze by jednotlive instance dostavaly referenci na poctiany radek a
> hodnoty v tomto radku primo menily. Tim by se snadno mohlo stat, ze
> vysledek po case bude o5 strasne neprehledny v tom smyslu, ze Vypocetni
> tridy si budou modifikovat sloupce po svem a nikde neni jistota, ze
> vstupni hodnoty potrebnych sloupcu nektera z predchozich trid nezmenila,
> tak ze vypocet jiz nebude fungovat.
>
> Nevim jestli jsem se dokazal vyjadrit alespon trochu pochopitelne.
> Nicmene obe reseni se mi nelibi z pohledu toho, ze sice zezacatku bude
> krasne citelny vypocet (ktery bude rozdelen na ruzne tridy po logickych
> castech vypoctu), ale casem se vypocet muze nekontrolovane zmenit a muze
> dochazet k nepredpokladatelnym chybam, jelikoz nekdo upravi cast, ktera
> rozbije jinou cast.
>
> Mozna by bylo resenim posilat do jednotlivych casti vypoctu Clony
> kolekce radek a pri navratu se postarat o modifikaci kmenove kolekce.
> Ale toto reseni mi prijde prehnane slozite.
>
> Rad bych Vas poprosil, jestli tedy existuje, o nejake osvedcene reseni,
> ktere by mohlo nastinit jakou cestou se dat.
>
>
> Dekuji mnohokrat A.
>
> Příspěvek zaslán emailem
Aha, tak jak to tak po sobe ctu tak to moc zrejme neni.
public Radka
{
public int podari;
public decimal a, b, c, d, e, f;
}
public Generator
{
private List |
Generovani kolekce objektu (recordu) Autor: algida 14:46:53 23.05.2011 |
||
Zdravim, Zdravim, rad bych Vas poprosil o nazor, pripadne doporuceni jak se nejlepe poprat s nasledujicim problemem. Potrebuji vygenerovat kolekci radek, kde znam vstupni hodnoty jako pocet radek a zakladni informace pro plneni radek. Nicmene plneni jednotlivych sloupcu v radccich muze zaviset jak na hodnotach, ktere byly vlozeny do predchozich radek kolekce, tak na tom, jaka hodnota v aktualne plnenem radu je v urcitem sloupci. Cela metoda plneni radku je pomerne hodne neprehledna. Problem by se dal vyresit nekolika zpusoby. 1. nekolikanasobny pruchod kolekci, pricemz by se vzdy spocetlo cast udaju radky. I kdyz nic jineho, tak to alespon zprehledni vypocet. Nicmene me trapi predstava, ze vypocetni trida modifikuje nekontrolovatelne kolekci radek a tudiz si mohou jednotlive tridy zodpovedne za urcitou cast vypoctu menit sloupce. Takze po case by mohlo dojit k tomu, ze z neznamych duvodu nekdo upravy cast vypoctu a tim rozbije jinou cast vypoctu. 2. Jeden pruchod kolekci a volani metod zaregistrovanych instanci objektu pro jednotlive casti vypoctu. Toto se mi libi, nicmene moc se mi nelibi ze by jednotlive instance dostavaly referenci na poctiany radek a hodnoty v tomto radku primo menily. Tim by se snadno mohlo stat, ze vysledek po case bude o5 strasne neprehledny v tom smyslu, ze Vypocetni tridy si budou modifikovat sloupce po svem a nikde neni jistota, ze vstupni hodnoty potrebnych sloupcu nektera z predchozich trid nezmenila, tak ze vypocet jiz nebude fungovat. Nevim jestli jsem se dokazal vyjadrit alespon trochu pochopitelne. Nicmene obe reseni se mi nelibi z pohledu toho, ze sice zezacatku bude krasne citelny vypocet (ktery bude rozdelen na ruzne tridy po logickych castech vypoctu), ale casem se vypocet muze nekontrolovane zmenit a muze dochazet k nepredpokladatelnym chybam, jelikoz nekdo upravi cast, ktera rozbije jinou cast. Mozna by bylo resenim posilat do jednotlivych casti vypoctu Clony kolekce radek a pri navratu se postarat o modifikaci kmenove kolekce. Ale toto reseni mi prijde prehnane slozite. Rad bych Vas poprosil, jestli tedy existuje, o nejake osvedcene reseni, ktere by mohlo nastinit jakou cestou se dat. Dekuji mnohokrat A. Příspěvek zaslán emailem |