Wzory nie są elementami składowymi - więc nie powinienem budować aplikacji na wzorcach MVC / MVP?

9

Przeczytałem stronę o wzorcach projektowych i tym, jak powinieneś traktować je podczas pisania kodu. Z mojego zrozumienia, jak tytuł w linku stwierdza:

Wzory nie są elementami składowymi.

Jeśli dobrze rozumiem, oznacza to, że nie należy używać wzorca projektowego, dopóki nie będzie to miało sensu, prawda? Nie zaczynaj od mówienia, że ​​zamierzasz użyć wzorca strategii, poczekaj, aż napiszesz jakiś kod, a jeśli użycie wzorca strategii ma sens dla twojego projektu, użyj go.

Czy traktuję wzorzec MCV / MVP w taki sam sposób, kiedy tworzę aplikacje GUI? Z odpowiednich linków wynika, że ​​jest to wzór architektoniczny.

Załóżmy, że jeśli utworzę aplikację GUI i nie używam wzorca MCV / MVP, ale mój kod jest czysty, czytelny i łatwy do utrzymania, czy nadal jest to zapach / zły projekt kodu, że nie użyłem wzorca MCV / MVP ?

amon
źródło

Odpowiedzi:

18

Jeśli dobrze rozumiem, oznacza to, że nie należy używać wzorca projektowego, dopóki nie będzie to miało sensu, prawda?

Tak.

Nie zaczynaj od mówienia, że ​​zamierzasz użyć wzorca strategii, poczekaj, aż napiszesz jakiś kod, a jeśli użycie wzorca strategii ma sens dla twojego projektu, użyj go.

Tak. Technicznie rzecz biorąc, możesz zdać sobie sprawę, że wzorzec strategii jest odpowiedni, zanim napiszesz jakikolwiek kod, ale powinno tak być, ponieważ myślałeś o rzeczywistym problemie i projektowałeś rozwiązanie tego problemu, co, jak zakładam, miałeś na myśli.

Czy traktuję wzorzec MCV / MVP w taki sam sposób, kiedy tworzę aplikacje GUI? Z odpowiednich linków wynika, że ​​jest to wzór architektoniczny.

Tak, MVC / MVP / etc są wzorcami architektonicznymi. W pewnym sensie nie ma to znaczenia, ponieważ nadal powinieneś używać MVC / MVP / etc tylko wtedy, gdy ma to sens; gdy jest to rozsądne dopasowanie do rzeczywistego problemu, który próbujesz rozwiązać. Różnica polega na tym, że ponieważ ma zastosowanie na znacznie wyższym poziomie niż, powiedzmy, wzorzec strategii, zazwyczaj dowiesz się, czy ma to sens, i zdecydujesz, czy zamierzasz użyć go w ramach twoją pracę projektową, zanim napiszesz dużo kodu.

Należy również pamiętać, że „MVC / MVP” nie jest pojedynczym wzorcem, ale bardzo dużą rodziną powiązanych wzorców i nie ma zgody co do tego, co dokładnie liczy się jako „MVC” lub „MVP” lub „MVVM” lub reszta powiązana zupa alfabetyczna.

Załóżmy, że jeśli utworzę aplikację GUI i nie używam wzorca MCV / MVP, ale mój kod jest czysty, czytelny i łatwy do utrzymania, czy nadal jest to zapach / zły projekt kodu, że nie użyłem wzorca MCV / MVP ?

Wcale nie, ponieważ MVC / MVP / etc nie są odpowiednie dla każdej aplikacji GUI. Na przykład niektóre interfejsy GUI mogą być tak proste, że byłoby to przesadą całkowitą lub niektóre interfejsy GUI mogą nie mieć żadnego trwałego stanu do umieszczenia w „modelu” itp. Istnieją dobre powody, dla których ta rodzina wzorców jest tak popularna, ale to nie jedyne sposoby na napisanie dobrego oprogramowania GUI.

Ponadto „zapach kodu” zwykle oznacza coś o konkretnym fragmencie kodu, który może być objawem większego problemu. Jeśli cały kod jest „czysty, czytelny i łatwy w utrzymaniu”, bez żadnych wyjątków, to prawie z definicji nie ma żadnych zapachów kodu (z wyjątkiem kilku zapachów „fałszywie pozytywnych”, które nie wskazują na rzeczywiste problemy ).

Aby odpowiedzieć na tytuł pytania: „Jak leczyć wzorzec MVC / MVP?”, Powiedziałbym: przeczytaj o tym, dlaczego te wzorce są tak popularne, tj. Jakie problemy próbują rozwiązać, aby w przyszłości możesz stwierdzić, czy Twój najnowszy problem można rozwiązać za pomocą tych wzorów.

Ixrec
źródło