Pseudokod procesu programowania vs. Rozwoju Test Driven

głosy
16

Dla tych, którzy nie czytali Code Complete 2, programowanie procesu Pseudokod jest zasadniczo sposobem projektowania rutynowych przez opisujące go w prostym języku angielskim, potem stopniowo zmienić go na bardziej szczegółowe pseudokod, a na końcu kodu. Główną zaletą jest to, aby pomóc utrzymać na odpowiednim poziomie abstrakcji przez systemy budynku odgórne zamiast oddolnym, co ewoluuje czyste API w różnych warstwach. Uważam, że TDD jest mniej skuteczny w tym, ponieważ skupia się zbytnio na ten absolutne minimum, aby przejść do testu i zachęca mały projekt z góry. Uważam też, że mając do utrzymania zestaw testów jednostkowych dla niestabilny kod (kod, który jest stale refactored) jest dość trudne, bo to zwykle jest tak, że masz testy jednostkowe tuzin dla rutynowych, że jest potrzebne tylko raz lub dwa razy. Kiedy robisz Refactor - zmienić podpis metody, na przykład - większość pracy możesz zrobić to w aktualizacji testów zamiast kod prod. Wolę po dodaniu testy jednostkowe kod komponentu za ustabilizował się nieco.

Moje pytanie brzmi - tych, którzy nie próbowałem obu podejść, co wolisz?

Utwórz 03/10/2008 o 22:44
źródło użytkownik
W innych językach...                            


6 odpowiedzi

głosy
4

Z Test-Driven Development powinna nadal być jakiejś planowanie na początku. Powinien on być najpierw spojrzeć na wysokim poziomie, co próbujesz zrobić. Nie pochodzą ze wszystkimi szczegółami, ale zorientować się w prostym języku angielskim, jak rozwiązać ten problem.

Następnie rozpocząć testowanie problem. Gdy masz próbę na miejscu, aby zacząć to przechodzić. Jeśli to nie jest łatwe do zrobienia, może trzeba zmienić swój wstępny plan. Jeśli występują problemy po prostu zmienić. Test nie jest tam, aby określić rozwiązanie jest tam, co pozwala na wprowadzenie zmian, dzięki czemu można mieć lepsze rozwiązanie przy jednoczesnym zapewnieniu stabilności.

Chciałbym powiedzieć, że najlepiej jest użyć TDD. Najważniejsze jest, aby uświadomić sobie, że TDD nie znaczy „skip planowania”. TDD oznacza zrobić trochę planowania, aby zacząć dobrze i dostosować w zależności od potrzeb. Może nawet nie trzeba regulować.

Odpowiedział 03/10/2008 o 22:51
źródło użytkownik

głosy
3

W ogóle uważam, pseudokod tylko naprawdę staje się istotne, gdy kod wymagany do rozwiązania problemu jest znacznie bardziej skomplikowana, że ​​kod wymagany do testowania rozwiązania. Jeśli to nie jest przypadek, że nie napotkasz można opisać jako najprostszej rzeczy, która mogłaby pracować zazwyczaj akceptowalne rozwiązanie do czasu warto poświęcić na problem trudności.

Jeśli, z drugiej strony, problem jest skomplikowany, muszę przemyśleć, jak go podejść, zanim mogę pisać nawet początkowe rozwiązanie naiwny - Ciągle trzeba zaplanować przed kodem I; Dlatego też użyć kombinacji obu podejść: AN opis po angielsku, co początkowo będę pisać, potem uprzęży testy, następnie naiwny kodu rozwiązanie, a następnie wyrafinowaniem.

Odpowiedział 03/10/2008 o 22:55
źródło użytkownik

głosy
1

Używałem zarówno wraz z Big Upfront Rozwoju, wszystkie trzy mają swoje miejsca w zależności od kwestii, takich jak język, dynamiki zespołu i wielkości Program / złożoności.

W dynamicznych języków (zwłaszcza rubinowe), bardzo polecam TDD, to pomoże Ci wychwycić błędy, że inne języki byłby złapany w czasie kompilacji.

W dużym, skomplikowanym układzie, tym bardziej zaprojektować robisz Upfront tym lepiej będziesz. Wydaje się, że kiedy zaprojektowany dla dużego projektu, każdy obszar, który ja ręcznie falowany i powiedział: „To powinno być dość proste” był punktem przeszkodą w dalszej części projektu.

Jeśli pracujesz sam na coś małego w języku statycznie wpisany, podejście lista jest rozsądna i pozwoli zaoszczędzić sporo czasu nad TDD (utrzymanie test nie jest wolny, choć pisanie testów na pierwszym miejscu nie jest zbyt źle) - Gdy nie ma żadnych testów w systemie, nad którym pracujesz, dodając testów nie zawsze jest podziwiany i można nawet wyciągnąć jakąś niechcianą uwagę.

Odpowiedział 03/10/2008 o 23:22
źródło użytkownik

głosy
1

Tylko dlatego, że testy przechodzi, nie znaczy, że skończysz.

TDD najlepiej charakteryzuje czerwony - zielony - Refactor .

Mając test zapewnia jeden (z dwóch) linii bramkowych. To dopiero pierwszy, minimalny zestaw wymagań. Prawdziwy cel jest taki sam cel jak „pseudokod procesu programowania” lub jakiejkolwiek dyscypliny projektowej.

Również TDD jest napędzany za pomocą testów, ale to nie znaczy, napędzany ślepo przez testowanie. Można iteracyjne swoje badania w taki sam sposób iteracyjne kodu. Nie ma miejsca dla dogmatycznego przestrzegania niemych planu tutaj. Ta an an Agile technika - to znaczy przystosować go do swojego zespołu i okoliczności.

Zaprojektować tyle kodu, aby mieć dającej się przetestować interfejs. Zaprojektować wystarczających badań w celu upewnienia się, że interfejs będzie działał. Zaprojektować więcej testów i kilka innych realizacji, aż pojawi się konieczność byłaby.

Prawdziwym celem jest dobre oprogramowanie. TDD nie można wykluczyć „dobroć”.

Technika nie jest restrykcyjna mandat. A technik powinien być rozważany jako krocze, aby pomóc produktów dobrego kodu. Gdybym był mądrzejszy, bogatszy i lepiej wyglądające, nie będę potrzebować TDD. Ale ponieważ jestem tak głupi jak ja, muszę kulę mi pomóc Refactor.

Odpowiedział 04/10/2008 o 00:18
źródło użytkownik

głosy
0

Dla mnie TDD ma pseudocoding asa po prostu nie może konkurować z - zarówno pomóc abstrakcyjne i planować rozwój, ale gdy skończysz rozwój w TDD ziemi wciąż masz testy jednostkowe .

AS użyteczne podejście jak CC2 opisane pseudocoding jest, to po prostu może nie odpowiadać. TDD jest tylko połowa o projektowaniu, ale także zapewnienie rygorystycznego rusztowanie można rozwijać projekt z przodu. Jednak nie widzę powodu, dlaczego nie można pseudokod, aby rozwiązać problemy zestawy TDD.

I nie musi się rozwijać organicznie.
Pseudokod jest umysł-zabójca.
Jest mało śmierć, która przynosi zapomnienie pamięć projektu.
Będę twarzą moją metodologię 90-tych.
Pozwolę to przejdzie po mnie i przeze mnie.
A kiedy ma przeszłość zwrócę wewnętrzny wzrok, aby zobaczyć jego ścieżkę.
Gdzie pseudokod upadł tam będzie TDD.
Tylko unit-testy pozostanie.

(Proszę nie płomienia mnie za to, że jestem tylko pół serio: P)

Odpowiedział 05/01/2009 o 10:22
źródło użytkownik

głosy
6

Mój zespół łączy oba podejścia i to jest niesamowite sposobem rozwijania (przynajmniej dla nas). Musimy testów jednostkowych, ponieważ mamy duży i kompleksowy system oprogramowania. Ale Programowanie Proces Pseudokod jest hands-down najlepszym podejściem do projektowania oprogramowania natknąłem. Aby uczynić je współpracować:

  • Zaczynamy pisząc nasze zajęcia, a następnie wypełnij w pełni skomentował odcinki metoda, z wejściami i wyjściami.
  • Używamy kodowania parę i wzajemnej weryfikacji jako dialog w celu udoskonalenia i zatwierdzić projekt, jeszcze tylko z króćców metod.
  • W tym momencie mamy teraz zarówno zaprojektowany nasz system i mieć trochę dającej się przetestować kod. Więc śmiało napisać nasze testy jednostkowe.
  • Wracamy i rozpocząć wypełnianie metodami z uwagi na logikę, która musi być napisane.
  • Piszemy kod; testy przechodzą.

Piękno to jest to, że od czasu, kiedy rzeczywiście pisanie kodu, większość prac realizacji jest już zrobione, bo tyle tego, co uważamy za wdrożenie jest rzeczywiście konstrukcja kod. Również na początku procesu zastępuje potrzebę UML - klasa i metoda odcinki są tak opisowe, plus to będzie rzeczywiście być używany. A my zawsze pozostanie na odpowiednim poziomie abstrakcji.

Oczywiście proces ten jest tak naprawdę nigdy nie był tak liniowego jak już opisano - niektóre dziwactwo realizacji może oznaczać, że musimy ponownie projekt na wysokim poziomie. Ale w ogóle, do czasu piszemy jednostka testuje projekt jest naprawdę dość stabilny (na poziomie metody), więc nie ma potrzeby przepisywania partii testowej.

Odpowiedział 02/04/2010 o 11:04
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more