Interfejsy\Klasy i zmieniające się własciwości

0

Witam,
chciałbym zasięgnąć porady jak rozwiązać problem z ciągłymi zmianami właściwości\metod w interfejsach. Przykład: otrzymuje zestaw interfejsów, które muszę zaimplementować u siebie w programie i wszystko spoko do momentu, aż znowu dostaje poprawione interfejsy, gdzie np. zostały jakieś właściwości lub definicje metodo usunięte\nazwy zmienione i w tym momencie VS nie wyświetla mi żadnej informacji, że klasa ma nadmiarowe właściwości lub metody.

0

Z kolegą mamy 2 serwisy, jeden jest odpowiedzialny za dostarczanie danych z bazy, a drugi za wykonywanie obliczeń itp. Serwisy te są na różnych maszyn i kolega dostarcza mi interfejsy z właściwościami jakie potrzebuje, a ja odpytuje bazę i dostarczam mu dane w zaimplementowanych klasach.

0

Podam przykład z czym mam problem.
Dostaje od kolegi interfejsy np. iCZLOWIEK, iKOBIETA, iMEZCZYZNA. Interfejsy iKOBIETA, iMEZCZYZNA dziedziczą interfejs iCZLOWIEK.
Przykładowa budowa: iCZLOWIEK{ string Imie, string Nazwisko, int Wiek , string Adres}, iKOBIETA{ decimal RozmiarBiustu }, iMEZCZYZNA{ decimal RozmiarBrody}
i spoko dostaje coś takiego i sobie, to implementuje w programie, lecz na drugi dzień interfejs iCZLOWIEK się zmienia i zostaje usunięta właściwość Adres, ja wykonuje aktualizację interfejsu u siebie i przy kompilacji wszystko jest OK, lecz w rzeczywistości zmienił się interfejs iCZLOWIEK i ja powinienem usunąć właściwość Adres z klasy, bo są to nie potrzebne dane i nie powinny być wysyłane. I nie wiem jak sobie z tym poradzić, gdy takich interfejsów jest np 100 i w każdym może coś się zmienić, jak to zweryfikować przy kompilacji? :/

1

No to na początek warto pogooglać o SRP, ISP oraz OCP.

0

Chętnie poczytam :D Dzięki. Jeśli ktoś miał taki problem, to chętnie dowiedziałbym się jak to rozwiązał :D Zależy mi na jakiś prostym rozwiązania, który nie będzie zajmował dużo czasu, bo projekt ten jest w ramach zabawy i wiadomo, że trzeba mieć czas jeszcze na wiele innych rzeczy w życiu :D

2

Problem leży między krzesłem a komputerem, a jego jedynym rozwiązaniem jest trzymanie się dobrych praktyk. Małe klasy i specjalizowane interfejsy pełniące pojedyncze funkcje to właśnie proste rozwiązanie, które nie zajmuje prawie w ogóle czasu, a na pewno mniej niż ciągłe poprawianie jakichś przerośniętych implementacji.

0

Pracowałem kiedyś tak. Były 2 osobne działy analityków i programistów. Bardzo mało komunikacji pomiędzy. Analitycy pisali dokumentacje, w tym projektowali interfejsy w EA i potem z tego była generowana paczka do implementacji u nas. Nie istnieje sposób na dobre zgranie tego. Analitycy nie wiedzieli problemu w zmianie literówek, nazw czy czegokolwiek co nagle pasowałoby im lepiej i każda podmiana paczki z interfejsami to było przywracanie aplikacji do życia przez kilka dni. Doszło do tego że jakieś 30% czasu to było dostosowywanie, ale nie było mowy o zmianie sposoby pracy.

Jedynym rozwiązaniem było CV do innej firmy ;). Ale przynajmniej mam wspomnienia.

0

I tu doświadczenia krzysiek050 jest dla mnie dobrą odpowiedzią :D Dzięki!!! W naszym przypadku zmiana interfejsu na klasę abstrakcyjną będzie wystarczająca w 99%, a co do odpowiedzi somekind zgadzam się, ale dla zabawy przy małych projektach człowiek chce uzyskać szybko jakiś efekt :D

0

A niby w jaki sposób pisanie małych klas sprawia, że efektu nie uzyskuje się szybko?

0

Klasy abstrakcyjne pewnie CI pomogą ale jeśli musiał byś stosować interfejsy to przed usunięciem z nich metod/właściwości możesz kliknąć w visualu find all references. To powinno wykryć wszystkie wywołania w waszym projekcie i nadmiarowe implementacje. Wyszukuje z lekkim nadmiarem ale jeśli metody nie nazywają sie np. Add to powinno ładnie działać. 'Iterować' powinikach mozesz klawiaszami F8 i shift +F8`. Nie które wersje visual pokazują czy to implementacja czy tylko wywołanie.

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