Czy warto mieszać w jednym projekcie różne wzorce projektowe?

0

Czy waszym zdaniem jest to poprawna praktyka? Czy może lepiej trzymać się jednego?
Pytam tak bez przykładu. Po prostu wpisałem do wujka google "node.js mixing design patterns", ale nie dostrzegłem nic kojarzącego mi się z tym tematem. Może tylko pdf odnośnie wzorców jako takich.

1

Nic dziwnego, że nie nasz sensownych wyników, bo pytanie jest bez sensu. Zapytaj na forum kulinarnym czy warto mieszać różne przyprawy.

Zgodnie z nomenklaturą z GoF to zwykły iterator już jest wzorcem, tylko zaimplementowanym wprost w składni językam.

2

Po pierwsze - wzorzec nie jest paradygmatem, więc o ile w przypadku wyboru danego paradygmatu lepiej jest się go trzymać i nie miksować np. OOP z funkcyjnym, ale korzystanie z kilku wzorców nie jest niczym złym. Oczywiście, jeśli ich zastosowanie w danym kontekście ma sens.

A po drugie - nie skupiaj się na wzorcu i tym, że czegoś się nauczyłeś i chcesz to na siłę wykorzystać. To jak w powiedzeniu gdy masz młotek to wszystko staje się gwoździem. Raczej zastanów się nad tym, jaką masz sytuację i jaki problem chcesz rozwiązać, a potem pokombinuj, który z wzorców by się nadał. I to, że np. podczas logowania userów do aplikacji skorzystasz z wzorca X nie oznacza, że wykorzystanie podczas obsługi kolejki zdarzeń wzorca Y jest błędem. Wręcz przeciwnie, te określone schematy postępowania (bo de facto właśnie tym jest wzorzec - wytycznymi, jak się powinno daną funkcjonalność ogarnąć) są jak klocki, które razem tworzą spójną całość (oczywiście - pod warunkiem, żę są użyte z głową, a nie na zasadzie "nauczyłem się wzorca fabryka i teraz muszę go wcisnąć gdzieś").

I jeszcze jedna uwaga - nie fiksuj się na wzorcach, ich nazwach i tym, jakie to one są niezbędne i mądre. Po pierwsze - takie pchanie na siłę rzeczy nazywa się cargo kult i nie jest dobrym zjawiskiem. A po drugie - jest np. taki wzorzec fasada - https://pl.wikipedia.org/wiki/Fasada_(wzorzec_projektowy). Sam wymyśliłem i używałem ten mechanizm o wiele wcześniej, zanim dowiedziałem się że w ogóle coś takiego jak wzorce projektowe istnieje ;) Wzorce nie są niczym magicznym ani nie są żadną wiedzą tajemną. To po prostu zebrane kilkanaście/dziesiąt popularnych scenariuszy/sytuacji które się w miarę często powtarzają i które można łatwo ogarnąć w jakiś konkretny sposób. I ten sposób właśnie nazywa się wzorcem.

0

@cerrato: Ok, dziękować. Zrozumiałem;-)

0

wpisałem do wujka google "node.js mixing design patterns",

Taka uwaga na temat szukania: taka fraza będzie zbyt szczegółowa. Zamiast Node.js, można by wpisać JavaScript. Albo lepiej: w ogóle pominąć język programowania. Zamiast mixing design patterns to np. multiple design pattern in one app. I coś ci znajduje: https://www.google.com/search?q=multiple+design+pattern+in+one+app

finito napisał(a):

Czy waszym zdaniem jest to poprawna praktyka? Czy może lepiej trzymać się jednego?

Wzorce używasz takie, jakich potrzebujesz w danym projekcie.
Masz problemy do rozwiązania i jeśli do danego problemu używasz jakiegoś wzorca, to go używasz.
Wzorce to skrzynka z narzędziami. To tak jakbyś spytał - czy potrzebuję tylko śrubokręta, czy też młotka albo 50 różnych innych narzędzi. Do pewnych rzeczy wystarczy śrubokręt, do innych niekoniecznie.

Ale możesz też przedobrzyć. Jeśli do wszystkiego będziesz targał ciężką skrzynkę i np. używał wiertarki udarowej do wkręcania żarówek, to nie będzie to miało wiele sensu. Tak jak napakowanie zbyt wieloma wzorcami jednego projektu też często nie ma sensu, jeśli wrzucasz te wzorce na siłę.

cerrato napisał(a):

Po pierwsze - wzorzec nie jest paradygmatem, więc o ile w przypadku wyboru danego paradygmatu lepiej jest się go trzymać i nie miksować np. OOP z funkcyjnym, ale korzystanie z kilku wzorców nie jest niczym złym. Oczywiście, jeśli ich zastosowanie w danym kontekście ma sens.

Tu się nie zgodzę. Wg mnie OOP akurat spoko się miksuje z funkcyjnym. Np. w OOP można mieć architekturę aplikacji, a funkcyjnie robić pewne obliczenia.

0

Np. w OOP można mieć architekturę aplikacji, a funkcyjnie robić pewne obliczenia

Ale równie dobrze możesz stworzyć sobie obiekty odpowiedzialne za logikę/obliczenia. Ja nie twierdzę, że tak się nie da, ale po prostu (zazwyczaj - od każdej zasady mogą być uzasadnione wyjątki) moim zdaniem lepiej jest wybrać jedno podejście i się go trzymać.

0

Nie da się nie łączyć wzorców w ramach jednego projektu. To normalne podczas programowania.

2
LukeJL napisał(a):
cerrato napisał(a):

Po pierwsze - wzorzec nie jest paradygmatem, więc o ile w przypadku wyboru danego paradygmatu lepiej jest się go trzymać i nie miksować np. OOP z funkcyjnym, ale korzystanie z kilku wzorców nie jest niczym złym. Oczywiście, jeśli ich zastosowanie w danym kontekście ma sens.

Tu się nie zgodzę. Wg mnie OOP akurat spoko się miksuje z funkcyjnym. Np. w OOP można mieć architekturę aplikacji, a funkcyjnie robić pewne obliczenia.

Też się zgadzam z @LukeJL, można spokojnie mieć jednoczesnie paradygmat funkcyjny i obiektowy w jednym projekcie.

Ale zgadzam się z @cerrato że raczej nie można mieć pół projektu obiektowy, a pół nie-obiektowy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1