Skocz do zawartości

[MikroKonkurs] Stream


Toster

Polecane posty

Max1414:

1) Uzywasz metody Free zamiast FreeAndNil

2) Watek TBlocker jest tworzony wewnetrznie w metodzie odczytu. Po 10s ulega autodestrukcji ale wskaznik na obiekt pozostaje nil. Osoba ktora bedzie rozszerzac twoja klase moze uzywac tego wskaznika do sprawdzania czy watek blokujacy wciaz istnieje.

3) TStrumyczek.FBlokada jest polem nadmiarowym. Dodatkowo w polaczeniu z bledem 2, jest mylaca (mozna by przypuszczac ze fBlokada := FBlockernil co nie jest prawda)

4) TStrumyczek.Read blednie zaklada ze odczytam wszystko co ma do zaoferowania. Jak zrobie Create(100,'A'), read(20), read(20), itd to tylko 1 read sie powiedzie. Czyli w czasie 10s mam wydajnosci 20 a nie zakladana 100

5) Powazny blad: TRzeczka.AddStrumyczek, nie sprawdzasz czy juz nie dodalem tego strumyczka. czyli jak zrobie r:=Trzeczka.Create; r.add(str1); r.add(str1); r.Free mam access violation

6) TRzeczka.Read, Najpierw odczytujesz z rzeczki ile sie da (linia 192), a pozniej sprawdzacz czy nie odczytales za duzo (linia 195). W efkecie woda ze strumyczka moze gdzies wsiakac (gubisz dane), gdy count

7) TJeziorko.Update, mamy tutaj cos co sie zowie coupling. Siegasz do obiektu globalnego form1, oducz sie tego zwyczaju ;)

 

 

Force:

1) Uzywasz zmiennych globalnych.... gin... -> coupling (bez komentarzy o KN, nie myl z singletonami)

2) Twoje klasy nie maja wydajnosci, jak bede je czytal bez opoznienia to beda dawac ile fabryka dala. Wydajnosc w czasie nie istnieje na poziomie tych klas

3) Brak klasy tamka

5) Powazny blad: TRiver.AddBrook, nie sprawdzasz czy juz nie dodalem tego strumyczka. patrrz punkt 5 u Max1414

 

Uwagi do obydwu prac:

1) Robicie "glodzenie strumykow", zawsze zaczynacie petle od 1. W przypadku w ktorym wydajnosc strumyka A + B jest taka jak rzeki to cala reszta strumykow nigdy nie zostanie odczytana, bo A+B zapcha cala rzeke

2) Uzywacie buforow o stalej wielkosci ktore zra bez opamietania stos (uzywacie je lokalnie) przy kilku wywolaniach jedno w drugim, (wiekszy system rzeczny) przepelnicie stos i wylozycie aplikacje

3) stale bufory moga byc przepelnione, nie sprawdzacie tego co zostane przekazane do konstruktorow. Co sie stanie jak zarzadam wydajnosci wiekszej niz wasze bufory ? niech zgadne.... AV ? (w najlepszym przypadku)

4) Wasza klasa rzeka nie spelnia wymagan stawianych przez osobe kontraktujaca ! Rzeka nie ma zdefiniowanej wydajnosci, pisze jak byk: Wydajnosc rzeczki jest rowna wydajnoscia strumyczkow.

 

Pomijajac bledy punktacja podana w zalorzeniach:

Force/Max1414

Czystosc kodu: 0.9/0.8(coupling/coupling, Free)

wizualizacja: 1/1(W obu przypadkach jest, zrozumiec co przedstawia....bezcenne :))

jesli wszystko dziala:0/ 0

rzeczka do rzeczki:+2/ 0(propozycja forca, w pozniejszych postach przyjeta)

 

resumujac wygral Force ale tylko przez przypadek tym razem :) Jakby max odziedziczyl TRzeczke po TStrumyczek bylby remis... a tak pech.

 

Pomijajc oficjalna punktacje to slabosc Panowie, zwroccie uwage na "Uwagi do obydwu".

 

Dzieki za udzial, licze na was w kolejnej edycji ;)

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

CYTAT(Toster @ wto, 13 maj 2008 - 17:13)

4) TStrumyczek.Read blednie zaklada ze odczytam wszystko co ma do zaoferowania. Jak zrobie Create(100,'A'), read(20), read(20), itd to tylko 1 read sie powiedzie. Czyli w czasie 10s mam wydajnosci 20 a nie zakladana 100

7) TJeziorko.Update, mamy tutaj cos co sie zowie coupling. Siegasz do obiektu globalnego form1, oducz sie tego zwyczaju ;)

 

 

ad. 4 - fakt :) nie pomyślałem o tym xD

ad. 7 - możesz mi to bardziej przybliżyć, bo nie chwytam :), wcześniej zrobiłem, że form1 odnosił się do klasy i sprawdzał stany, ale coś sie chrzaniło i odczytywał chyba stare dane czy coś w ten styl

 

CYTAT(Toster @ wto, 13 maj 2008 - 17:13)

Uwagi do obydwu prac:

4) Wasza klasa rzeka nie spelnia wymagan stawianych przez osobe kontraktujaca ! Rzeka nie ma zdefiniowanej wydajnosci, pisze jak byk: Wydajnosc rzeczki jest rowna wydajnoscia strumyczkow.

 

rzeczka do rzeczki:+2/ 0(propozycja forca, w pozniejszych postach przyjeta)

 

 

ad.4 nie było napisane, że mamy to zdefiniować ^^ tylko było info, żebyśmy wiedzieli jak ma działać rzeczka ;D

 

rzeczka do rzeczki - fuck, zapomniałem, bo czytałem tylko pierwszy post jak robiłem xD

 

CYTAT(Toster @ wto, 13 maj 2008 - 17:13)

Jakby max odziedziczyl TRzeczke po TStrumyczek bylby remis... a tak pech.

 

 

A w jakim celu ? xD

 

 

EDIT:

 

2) Uzywacie buforow o stalej wielkosci ktore zra bez opamietania stos (uzywacie je lokalnie) przy kilku wywolaniach jedno w drugim, (wiekszy system rzeczny) przepelnicie stos i wylozycie aplikacje

 

To buffor powinien być dynamiczny? Bo mi zawsze na forach gadali, że tablice dynamiczne to zło... i dlatego dałem statyczną

Moje projekty: http://wojciechkulik.pl

Link do komentarza
Udostępnij na innych stronach

de jednych rzeczy stosuje sie statyczne do innych dynamiczne. Ludzie ktorzy od razu zakladaja ze jakis element jezyka jest zly zazwyczaj naleza do jednej z 2 kategorii:

1) nie umiem tego ale to trudne wiec zle

2) wiem najlepiej

 

A tak na powaznie, czym sie rozni c: array [0..100] of .... od SetLength(c, 100) ? Tablice dynamiczne maja swoje plusy maja i minusy, ale tworzenie klasy ktora uzywa sztywnego bufora do takich zagadnien jak tutaj jest wg mnie chybione, dlaczego napisalem powyzej. Zawsze mozna to obgadac.

 

Jakbys odziedziczyl po strumyczkach to bys mogl robic rzeczka.add(rzeczka2) bo skoro rzeczka to strumyczek to mozesz ja dodawac do innej rzeczki

 

Info bylo tak jak napisalem: rzeczka ma wydajnosc taka jak wpadajace do niej strumyczki, nie nie musieliscie definiowac, a zdefiniowaliscie.

 

ad 4)

http://en.wikipedia.org/wiki/Coupling_%28computer_science%29

http://en.wikipedia.org/wiki/Dependency_hell

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

Ja wiedziałem, że jest zły, ldatego dałem tylko 10 kB co pewnie przy dużym natężeniu bym miał Range Error, ale mi się nie chciało, miałem mało czasu i irytacja mnie chwytała już od strumieni :) to z rzeka to było świadomi, że ma jakiś tam przepływ, bo uważam, że przecież koryto się nie poszerzy

Baza tysięcy lotnisk: http://airportsbase.com

Link do komentarza
Udostępnij na innych stronach

To jest świeży system rzeczny :D ogólnie jakbym znał wcześniej strumienie a nie uczył się 11 i 12 to by nie było Twoich uwag, bo to że AV i że głodziłem strumienie to wiedziałem, tak samo że tam (od tama :P) nie ma, ale czasu nie miałem a i po 23 wczoraj sił nie miałem :) a się nie boje, bo na wystrzelenie z PPanca trzeba sekundę to mój granatnik Cie roztraszka :P no i ja uzywam uszów to nasłuchuje czy coś chodzi, ale to już duży off-top :P

Baza tysięcy lotnisk: http://airportsbase.com

Link do komentarza
Udostępnij na innych stronach

To jest świeży system rzeczny :D ogólnie jakbym znał wcześniej strumienie a nie uczył się 11 i 12 to by nie było Twoich uwag, bo to że AV i że głodziłem strumienie to wiedziałem, tak samo że tam (od tama :P) nie ma, ale czasu nie miałem a i po 23 wczoraj sił nie miałem :) a się nie boje, bo na wystrzelenie z PPanca trzeba sekundę to mój granatnik Cie roztraszka :P no i ja uzywam uszów to nasłuchuje czy coś chodzi, ale to już duży off-top :P

 

w co wy gracie xD? bo aż mi sie kojarzy z Wolfenstein: Enemy Territory

 

Kiedy nastepny konkurs?

Moje projekty: http://wojciechkulik.pl

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...