Mam proces 6 kroków.
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.
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.
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.
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.
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.
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.
Myślę, że to powinno być wiki społeczności. –