Powtarzający się kod w dll

0

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?

2

Powtarzający się kod wrzuć do następnej dll np.: ''Project.Common'' i dodaj ją jako referencja do 2 obecnych.

0

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?

0

Powtarzający kod niesie za sobą kilka stanowczych błędów:

  1. W przypadku znalezieniu błędu należy poprawić kod w każdym miejscu (bardzo słabo).
  2. W przypadku poprawy błędu trzeba redeployować wszystkie biblioteki (a nie tylko jedną dll).
  3. 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).

0

no to jak będziesz używał pojedynczo bibliotek to zamiast wrzucać samo PlugA.dll dorzucisz jeszcze PlugCommon.Dll - gdzie widzisz problem?

1

Pytanie jak dużo tego kodu, z jakiej przyczyny te obecne implementacje są identyczne, i jakie są szanse, że jedna się zmieni, a druga nie w przyszłości. Bo jeśli tak, to wydzielanie wspólnej części może nie mieć sensu.

0

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.

0

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.

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