@lukasz1985m: co ma TDD/DI do optymalności systemu i "potworności"?
Jeśli chcesz testować "cały system", to w niektórych przypadkach wylądujesz z milionami możliwych kombinacji, których realne przetestowanie jest niemożliwe. A prędzej lub później się wydarzą.
10 metod, każda tworzy dwa rozgałęzienia w logicznym przebiegu programu. Żeby w pełni przetestwować program, masz możliwość utworzenia 2^10 lub 3* 10 + 1 testów (3 - na każdą metodę zakładam sprawdzenie, czy dobrze wywołujesz współpracownika
@lukasz1985m: ok, jeśli jesteś programistą, to prawdopodobnie znasz jakieś podstawy logiki. Może mógłbyś więc uargumentować swoje wypowiedzi?
Np. ja wykazałem, trywialnym, jak to nazwałeś, przykładem, że istnieją przypadki, dla których twoje podejście jest złe, lub raczej: problematyczne. Prawdę powiedziawszy nie widzę, dlaczego miałoby to nie działać w bardziej skomplikowanych przypadkach.
Po drugie, na co dzień pracuję przy aplikacjach, które alokują kilka GB pamięci - ze względu na rozmiary danych wejściowych. Dane dla
Ma tyle, ze jak chcesz testować wszystko to musisz wypluwać tysiące fabryk albo nawalać kod przez refleksje(lub robi to za Ciebie framework), a wszystko w DI, gdzie każda klasa i każdy obiekcik utrzymuje wskaźnik do swojej zależności. Nie dość, że pochłania olbrzymie ilości czasu procesora to wygląda jak chlew i żry tony pamięci.
(tak, dobrze czytasz między wierszami: zmienne globalne lub statyczne (defacto jeden kij), które są tutaj jedyną alternatywą to p--------a normalność!)
@lukasz1985m: a nie czujesz tego, że jeśli twój tok rozumowania wywala się na trywialnym przykładzie, to tym bardziej będzie się wywalał na bardziej złożonym?
Idiotyzmem jest pisanie testów przed pisaniem właściwego kodu.
@lukasz1985m: Nie bierzesz pod uwagę, że jednym z głównych celów TDD nie jest tylko posiadanie testów – ale także praca nad dizajnem kodu. Pisząc „test”, a właściwie „specyfikację”, decydujesz jak będziesz chciał z tym kodem pracować, co od niego oczekujesz. I jednocześnie nie ma wtedy mowy, żeby jakiś fragment kodu był nieprzetestowany – nie dopisujesz implementacji, dopóki nie masz failującego testu.
ATTENZIONE Ginekolog oznajmił, że na 90% urodzi się chłopak. Jako, że przy wybieraniu imienia dla pierwszego dziecka dostawałem strasznej c-----y, tak drugie imię to droga przez piekło. Liczę na was, ludzi oświeconych(i jebniętych) pomóżcie mi wybrać imię dla chłopaka
Jeśli chcesz testować "cały system", to w niektórych przypadkach wylądujesz z milionami możliwych kombinacji, których realne przetestowanie jest niemożliwe. A prędzej lub później się wydarzą.
10 metod, każda tworzy dwa rozgałęzienia w logicznym przebiegu programu. Żeby w pełni przetestwować program, masz możliwość utworzenia 2^10 lub 3* 10 + 1 testów (3 - na każdą metodę zakładam sprawdzenie, czy dobrze wywołujesz współpracownika
@lukasz1985m: Po pierwsze, czy piszesz testy czy nie, zasady czystego kodu obowiązują (powinny obowiązywać).
Ty nie masz tutaj zarzutu do TDD, bo z TDD też można pisać wujowy kod. Ty masz zarzut, że ktoś w ogóle używa OOP, stosuje przy tym SOLID, itd.
@lukasz1985m: Jak na wszystkie argumenty odpowiadasz
XDi inwektywami to się zgadzam, że EOT.Np. ja wykazałem, trywialnym, jak to nazwałeś, przykładem, że istnieją przypadki, dla których twoje podejście jest złe, lub raczej: problematyczne. Prawdę powiedziawszy nie widzę, dlaczego miałoby to nie działać w bardziej skomplikowanych przypadkach.
Po drugie, na co dzień pracuję przy aplikacjach, które alokują kilka GB pamięci - ze względu na rozmiary danych wejściowych. Dane dla
Komentarz usunięty przez autora
Komentarz usunięty przez autora
@lukasz1985m: Po przyjrzeniu się jakości twoich wypowiedzi na mirko można odnieść zupełnie inne wrażenie
@lukasz1985m: Myślę, że koledze @sasik520 nie chodziło o każdy możliwy sposób odpalenia funkcji, ale o każdy możliwy sposób zadziałania funkcji.
Tzn masz rację, że testuje się pod kątem scenariuszy – potrzebuję zrobić
X, więc przekazujęYi dostajęZ. Ale też@
Komentarz usunięty przez autora Wpisu
@lukasz1985m: Nie bierzesz pod uwagę, że jednym z głównych celów TDD nie jest tylko posiadanie testów – ale także praca nad dizajnem kodu. Pisząc „test”, a właściwie „specyfikację”, decydujesz jak będziesz chciał z tym kodem pracować, co od niego oczekujesz. I jednocześnie nie ma wtedy mowy, żeby jakiś fragment kodu był nieprzetestowany – nie dopisujesz implementacji, dopóki nie masz failującego testu.
Co w tym
Komentarz usunięty przez autora