Przy opracowywaniu systemu lub aplikacji, której planujesz używać z określonym frameworkiem, najlepiej jest zaprojektować system bez uwzględnienia frameworka, czy lepiej jest zaprojektować system z nastawieniem „cóż, frameworki byłyby łatwiejsze z tym".
development-process
systems
Robert Pounder
źródło
źródło
Odpowiedzi:
Twój projekt powinien jak najlepiej zaspokajać potrzeby klientów. Pamiętaj, że projekt obejmuje małe rzeczy, takie jak:
Żadna z tych rzeczy nie powinna być podyktowana przez ramy. Jeśli jasne jest, że będziesz walczył ze swoim frameworkiem, aby osiągnąć te cele, wybierz nowy framework, który pomoże ci osiągnąć te cele, zanim zaczniesz pisać kod.
Po wybraniu odpowiedniego zestawu narzędzi (struktura jest narzędziem), zalecam korzystanie z narzędzi w sposób, w jaki zostały zaprojektowane. Im bardziej odejdziesz od projektu frameworka, tym bardziej zwiększasz krzywą uczenia się dla swojego zespołu i tym większa szansa, że coś pójdzie nie tak.
W skrócie
Dalsze myśli:
Po ponad 20 latach inżynierii oprogramowania i korzystaniu z kilku platform, nauczyłem się kilku lekcji. Wszystkie ramy są obosiecznym mieczem: oba ograniczają i umożliwiają. Problemem przy podejmowaniu decyzji o swoim frameworku przed spojrzeniem na wielką 3, o której wspomniałem powyżej, jest to, że możesz narazić na szwank dobre wrażenia użytkownika dla przeciętnego (w najlepszym przypadku). Lub możesz być zmuszony do odejścia od projektowania frameworków, aby osiągnąć określoną funkcjonalność.
źródło
Szkielety w naturalny sposób wpływają na projektowanie określonych modułów i podsystemów (takich jak interfejs GUI). Jak wspomniano w innej odpowiedzi, będziesz miał trudności z walką z wybranymi przez siebie ramami.
Mówiąc bardziej ogólnie, powinieneś unikać pozwalania, aby jakakolwiek pojedyncza platforma lub technologia dyktowała lub kierowała „szerokim obrazem” całej architektury systemu. Większość frameworków aplikacji ogólnego przeznaczenia nie zachęca do tego, więc jeśli okaże się, że piszesz cały system wokół jednego frameworka, prawdopodobnie robisz coś, czego nie zamierzali autorzy tego frameworka.
Prawdopodobnie użyjesz wielu różnych ram do rozwiązania różnych problemów; gdy twój system staje się bardziej złożony, musisz uważać, aby nie zbudować The Big Ball Of Mud . Tam, gdzie to możliwe, utrzymuj swój system modułowy i luźno powiązany. Niektóre frameworki można lepiej ukryć za abstrakcjami, pisząc opakowania i adaptery, które „ukrywają” przepływy pracy specyficzne dla frameworka przed innymi komponentami. Zestawy narzędzi GUI zwykle obsługują tylko front-end GUI, więc te moduły GUI powinny być trzymane z dala od reszty systemu.
Struktury ogólnego przeznaczenia (takie jak frameworki interfejsu użytkownika, frameworki warstwy danych itp.) Nie istnieją w celu opisania pełnej architektury systemu - co najwyżej mogą zalecić projekt komponentu lub modułu; na przykład niektóre technologie GUI są ukierunkowane na określone wzorce MV *.
Ogólna architektura systemu powinna wynikać przede wszystkim z wymagań biznesowych . Możesz mocno opierać się na konkretnym narzędziu (na przykład narzędziu do przesyłania wiadomości lub oprogramowaniu ORM) w celu powiązania wszystkiego, ale jeśli obudowałeś środowisko abstrakcyjne, takie jak klasa „usługowa”, jest mniej prawdopodobne, że napotkają ograniczenia, gdy napotkasz jego ograniczenia.
Podczas projektowania dużego obrazu staraj się pamiętać o następujących kwestiach:
źródło
Tak, powinieneś jak najściślej trzymać się tego, co „nakazuje” ci struktura.
Powodem jest po prostu to, że im bardziej trzymasz się ramowego sposobu „myślenia”, tym łatwiej będziesz mógł rozmawiać z innymi programistami o swoich problemach / pomysłach, które również korzystają z tego frameworka.
Zwiększasz interoperacyjność i łatwość użytkowania dla innych osób, które później z niej skorzystają, lepiej zrozumiesz i wprowadzisz samouczki lub popularne rozwiązania, jeśli będziesz trzymał się podstawowej filozofii tego, czego używasz.
Jedynym dobrym powodem, dla którego mogę wymyślić, dlaczego „złamałeś” strukturę, jest to, że absolutnie potrzebujesz czegoś, czego nie może ona zapewnić, biorąc pod uwagę jej „domyślną” konfigurację / stosowanie zasad. Ale z drugiej strony może to nie być właściwe ramy.
Zasadniczo może to dotyczyć również innych decyzji. Należy używać języka używasz tak ściśle, jak to ma być stosowane, ponieważ to sprawia, że rzeczy łatwiej , jeśli mówimy tym samym językiem, jak każdy inny.
źródło