2009-10-20 18 views
13

Zaczynam aplikację Rails dla klienta i zastanawiam się nad stworzeniem mapy umysłu lub przejściem prosto do specyfikacji ogórka.Jak planujesz swoją aplikację Rails?

Jak zaplanować aplikację Rails?

Jako dodatkowe pytanie, powiedzmy, że zaczynasz od Ogórka, w którym momencie napiszesz Testy jednostkowe? Przed spełnieniem specyfikacji?

+1

Myślę, że to powinno być wiki społeczności. –

Odpowiedz

4

Nie sądzę, aby napisać tylko funkcje ogórka, ponieważ specyfikacja to dobry pomysł. Pisanie kodu testowego bez możliwości przetestowania go prowadzi do błędów w testach i wydłuża czas potrzebny na ich późniejszą korektę.

Więc ja wykonać następujące czynności:

  • napisać mapy myśli. Ale trzymaj się prostego z głównymi pomysłami projektu.
  • Zacznij pisać testy i kodowanie w czasie rzeczywistym (napisz jeden test, przeprowadź go, napisz inny, ...).

Więc napiszesz swoje dane podczas jazdy. Utrzymanie go w czystości, ale także zachowanie zwinności i możliwość zmiany niektórych pomysłów w trakcie projektu.

+0

Czy jasno zdefiniowałbyś domenę jako anty-agile? – Alexandre

+1

Nie. Dopóki pozwolisz sobie zmienić to, co zdefiniowałeś wcześniej, kiedy projekt ewoluuje, pozostaniesz sprawny. –

+0

Zastanawiam się nad napisaniem funkcji wcześnie, aby móc zidentyfikować, jakie metody modeli są potrzebne, a następnie napisać testy jednostek, a następnie wrócić do funkcji. – Alexandre

5

Zaczynam od szkiców interfejsu użytkownika, a następnie przechodzę do makiet HTML. Po sfinalizowaniu projektu interfejsu użytkownika mogę zidentyfikować zasoby RESTful w aplikacji i ich relacje.

+0

Witaj John, Nie możesz zidentyfikować zasobów RESTful, dokładnie mapując domenę? – Alexandre

+0

Możesz zrobić, ale zaczynając od interfejsu użytkownika, najpierw pomaga mi określić, gdzie są granice domeny. Zobacz http://gettingreal.37signals.com/ch06_From_Idea_to_Implementation.php –

36

Mam proces 6 kroków.

  1. Wolę wypracować relację modelu i wykorzystać przed zrobieniem czegokolwiek. Generalnie staram się definiować modele w jednostki zawierające spójne fragmenty informacji. Zwykle zaczyna się od zidentyfikowania zasobów ortogonalnych, których moja aplikacja będzie potrzebować (użytkownicy, posty itp.). Następnie znajduję informacje, których każda z tych zasobów jest absolutnie potrzebna (atrybuty) i które mogą potencjalnie potrzebować (powiązania) i jak te informacje będą najprawdopodobniej obsługiwane (metody), stamtąd definiuję zbiór zasad, które regulują spójność zasobów (walidacje).

    Zazwyczaj powtarzam kilka razy mój projekt, ponieważ czynność definiowania innych modeli zwykle sprawia, że ​​muszę przemyśleć te, które już zrobiłem. Kiedy już mam projekt modelu, który mi się podoba, zacznę refaktoryzować lub specjalizować (podklasy) modele, aby wyjaśnić projekt.

  2. Piszę migrację i robię szkielety dla moich modeli. Zwykle nie będę pisać testów, dopóki nie będę miał pierwszego projektu metod i zatwierdzeń. Nie zawsze jest oczywiste, jak wprowadzać w życie rzeczy, dopóki nie przyjmiemy umiarkowanej myśli.

  3. Następny zestaw testów. Nie ma znaczenia, co napisałem przy testach, o ile mogę być pewien, że zaplecze jest przy zdrowych zmysłach.

  4. Dzieje się tak, gdy połączę przepływ sterowania. Co dzieje się z pozytywnym przyjęciem? Nieudana próba? Które działania kontrolera będą linkować do innych? Zwykle istnieje mapowanie pomiędzy kontrolerami i modelami (nie licząc podtypów modeli), tak często spotykam sytuacje, w których muszę działać na wielu typach modeli, ponieważ prawdopodobnie utworzę nowy kontroler. W zależności od tego, jak skomplikowana jest moja aplikacja, mogę modelować przepływ jako automat stanów.

  5. Wreszcie utworzę widoki.Zacznę od szkicowania interfejsu użytkownika, na który silnie wpływają relacje i atrybuty mojego modelu. Wykreśl części wspólne, a następnie zapisz widoki.

  6. Polski interfejs użytkownika. Tworzę CSS i zaczynam zastępować linki zdalnymi wywołaniami lub nawet javascript, gdy jest to odpowiednie.

Mogę przeplatać kroki 2 i 3. Uważam, że napisanie testu jest bardzo łatwe zaraz po napisaniu kodu do przetestowania. Szczególnie, że zazwyczaj testuję rzeczy w konsoli podczas pisania, a połowa testu jest zapisywana przez wklejenie z konsoli.

Mogę również podzielić na części kroki 4 i 5 dla każdego modelu/kontrolera. Każdy punkt, który mogę cofnąć i poprawić, poprzednią decyzję, i propagować te zmiany przez moje kroki.

+0

Nie mówisz, jak rozpoznajesz modele i kontrolery. –

+1

I rodzaju glossed over that. Wydawało mi się, że ten opis jest zbyt głęboki na tak niejasne pytanie. Zmontowałem go, aby uwzględnić to teraz. Podczas gdy byłem na tym, dodałem podobne szczegóły do ​​moich innych kroków, a nawet dodałem. – EmFi

Powiązane problemy