Główny problem
Widząc dobre wsparcie większość nowoczesnych platform programowania ma do zarządzania pakietami (myślę gem
, npm
, pip
itp), to ma sens, aby zaprojektować aplikację lub system składający się z wewnętrznie opracowanych pakietów, tak aby promować i tworzyć luźno architekturę?
Przykład
Przykładem może być tworzenie pakietów dostępu do bazy danych, a także do uwierzytelniania i innych komponentów systemu. Te oczywiście używają również zewnętrznych pakietów. Następnie system importuje i używa tych pakietów - zamiast włączać ich kod do własnej bazy kodu.
Uwagi
Wydaje mi się, że sprzyjałoby to oddzieleniu kodu i pomogłoby w utrzymaniu, niemal w sposób oparty na sieci Web vs.
Czy to wydaje się racjonalną i rozsądną koncepcją projektową? Czy jest to obecnie używane jako standardowy sposób strukturyzacji aplikacji?
źródło
W sumie to dobry pomysł. Musisz pomyśleć o utworzeniu wewnętrznego repozytorium pakietów (zwykle zwanego „repozytorium artefaktów” w świecie Java lub „serwerem pypi” w świecie Python), aby zachować tam te pakiety, których nie chcesz lub nie możesz ” Wydanie jako open source.
Jak zauważył @pdr, przygotuj się na piekło zależności , w którym zmiana w jednym pakiecie wymaga najpierw kolejnej zmiany w innym pakiecie, a to oznacza nie tylko zmianę linii kodu, ale także przetestowanie go, być może zaakceptowanie zmian, budowanie wydania i przesyłanie wydania do wspomnianego repozytorium pakietów. A potem zmieniając to, co zamierzałeś zmienić.
Jedyny przepis, jaki mogę ci dać z mojego doświadczenia, aby spróbować to zminimalizować: nie polegaj wyłącznie na wyodrębnianiu wspólnych koncepcji z twoich pakietów w pakiecie „wspólnym” lub „frameworku” . Może się to wydawać bardzo obiektywną rzeczą, ale doprowadzi do stworzenia pakietu potworów, który wymaga częstych, być może sprzecznych zmian i wydań. O wiele lepiej, pomyśl o funkcjonalnościach twojego systemu i stwórz pakiet pomocniczy dla każdego z nich, jak opisano w swoim pytaniu.
Oprócz tego, główną korzyścią, jaką otrzymasz, jest to, że twoje aplikacje są izolowane od (wielu) zależności, więc możesz je wymieniać bez bólu.
źródło
common
pakietu jako opcji, ale, jak pan powiedział, widziałem, że stanie się to „rozsądną” decyzją w przyszłości. Moim zamiarem było skupienie się bardziej na liniach komponentów niż na kodzie - idealnie więc nie powinieneś mieć zbyt wielu fragmentów kodu, które robią to samo w różnych pakietach, ponieważ są przeznaczone do robienia różnych rzeczy. Domyślam się, że jeśli występują podobieństwa między pakietami, tego rodzaju powtarzanie nie naruszałoby dobrych zasad programowania, ponieważ projekty są z definicji odrębne.