Nie sądzę, że miał na myśli tak „zły projekt”, jak „złą praktykę”. Ogólnie rzecz biorąc, aplikacja internetowa powinna być tak bezstanowa, jak to tylko możliwe. Chociaż na przykład może być konieczne podanie informacji o użytkowniku w celu autoryzacji przeglądania strony, informacje te mogą zostać zapisane na komputerze klienckim w postaci pliku cookie, a serwer po prostu sprawdza informacje o użytkowniku za każdym razem.
Byłoby to idealne, ale nie zawsze możesz liczyć na to, że klient będzie mógł zapisać pliki cookie. Ponadto polega na sprawdzeniu poprawności użytkownika w sposób bezstanowy, co potencjalnie wiąże się z pytaniem o informacje z bazy danych w celu uzyskania prostego żądania strony. Często łatwiej jest zapisać takie informacje w sesji.
Jednak po przekroczeniu Rubikonu wielu programistów ma ochotę zapisać nie tylko informacje uwierzytelniające w sesji, ale także wiele innych rzeczy. Jest to anty-wzorzec i powoduje, że twoja aplikacja internetowa jest silnie zależna od stanu, czego dokładnie należało unikać.
Niektórzy programiści uzależniliby się od technologii takiej jak Spring (jeśli używasz Javy), aby rozplątać bałagan zależności, ale argumentowałbym, że to tylko ułatwia tworzenie zależności, a nie ich eliminowanie. Takie technologie powinny pomóc Ci w rozwoju, a nie sprawić, że Twój wzór będzie mniejszym problemem.
Dlatego dobrą ogólną zasadą jest to, że jeśli możesz napisać go bezstanowego, prawdopodobnie lepiej to zrobić, inaczej ryzykujesz wpadnięcie w tę pułapkę. Oczywiście napotkasz sytuacje, w których jest to wymagane, ale ogólnie mówiąc, powinieneś zapisywać tylko te informacje, które w innym przypadku byłyby trudne do odzyskania.