Witam,
mam dwie dll wykonujące całkowicie różne zadania. Problem w tym, że mam dwa proste(tylko gettery bez innych metod) interfejsy i ich implementacje, które są identyczne w obu tych bibliotekach. To znaczy, że powtarza mi się kod, a to chyba niedobrze. Czy taki powtarzający się kod w dll jest ok czy są jakieś sposoby na poradzenie sobie z tym?
- Rejestracja:ponad 8 lat
- Ostatnio:ponad 7 lat
- Postów:36
- Rejestracja:ponad 8 lat
- Ostatnio:ponad 7 lat
- Postów:36
Myślałem o tym i właśnie tu mam dylemat co jest lepszą praktyką.
Bo widzisz teraz kod się powtarza, ale biblioteki są samodzielne i mogę ich użyć niezależnie w innych projektach (tzn. jedna nie potrzebuje drugiej do działania).
Jeśli wydzielę część wspólną to żadna z tych dwóch bibliotek nie będzie mogła działać bez tej trzeciej. I przy przenosinach do innego projektu muszę pilnować, aby zostały przeniesione dwie biblioteki + pododawać referencje między nimi. Nie wiem co lepsze - powtarzający się kod czy bałagan w bibliotekach?
- Rejestracja:około 10 lat
- Ostatnio:6 dni
- Lokalizacja:Poznań
- Postów:216
Powtarzający kod niesie za sobą kilka stanowczych błędów:
- W przypadku znalezieniu błędu należy poprawić kod w każdym miejscu (bardzo słabo).
- W przypadku poprawy błędu trzeba redeployować wszystkie biblioteki (a nie tylko jedną dll).
- Masz 2 identyczne klasy w dwóch różnych dll, co za tym idzie są to inne typy a więc w przypadku kiedy będziesz tworzyć nowy projekt, który będzie korzystał z tych dwóch dll napotkasz się na problem niezgodności typów (utrudnione wstrzykiwanie zależności, itp.).
Dużo większym błędem jest powtarzający się kod niż rozprowadzanie 2 dll. Jeśli jednak koniecznie chcesz mieć całość w jednej DLL zainteresuj się takimi narzędziami jak ILMerge dla .NET (lub odpowiednikami dla innych technologii).

- Rejestracja:ponad 12 lat
- Ostatnio:7 miesięcy
- Postów:6610
no to jak będziesz używał pojedynczo bibliotek to zamiast wrzucać samo PlugA.dll dorzucisz jeszcze PlugCommon.Dll - gdzie widzisz problem?
- Rejestracja:ponad 8 lat
- Ostatnio:ponad 7 lat
- Postów:36
Tak jak pisałem w pierwszym poście - powtarzające się klasy są tylko kontenerami na dane i nie mają żadnych metod (w sensie logiki bo getter jest jednak metodą). Nie byłoby tematu gdyby klasa zawierała jakąś logikę, jest dla mnie oczywiste, że należy wydzielić ją do osobnej dll. @abrakadaber nie mam problemu z dołączaniem większej liczby dll, pytanie jest wyłącznie o dobre praktyki.

- Rejestracja:ponad 21 lat
- Ostatnio:około godziny
Jeśli wydzielę część wspólną to żadna z tych dwóch bibliotek nie będzie mogła działać bez tej trzeciej. I przy przenosinach do innego projektu muszę pilnować, aby zostały przeniesione dwie biblioteki + pododawać referencje między nimi. Nie wiem co lepsze - powtarzający się kod czy bałagan w bibliotekach?
Ale co to za problem przenieść dwie biblioteki zamiast jednej. Nawet jeśli ktoś o tym zapomni, to szybko sobie przypomni bo mu projekt bez potrzebnej DLL-ki nie ruszy albo się nawet nie skompiluje - zależnie od tego czy przenosisz źródła czy binarki.