Wpis z mikrobloga

Mircy z #programowanie . Spotkaliście się kiedyś z problemem, gdzie rozwijacie jeden program dla kilku klientów i niektóre jego wersje wymagają nieco innego podejścia / innych elementów (ingerujących w cały system) ? Jak sobie poradzić z tym? Traktować to jako osobne projekty (ale wtedy część wspólną trzeba przepisać przy każdej zmianie wtf)? ( ͡° ʖ̯ ͡°)

Wiem, że najlepszym rozwiązaniem byłoby pracować w normalnej firmie, ale póki co trzeba rozwiązać taki problem ( ͡° ͜ʖ ͡°)

  • 16
@wczoraj: nie no jasne, to było pierwsze o czym pomyślałem, ale ... nie da się już tego zmienić, musiałbym przepisać od nowa... u niektórych klientów baza jest w 1 wersji, u reszty w najnowszej ze zmianami - problem jak to zmigrować itd. ( ͡° ʖ̯ ͡°) Ciężko się robi apki bez założeń
@StronaGlowna: w jednej z firm mieliśmy ten problem. Tam rozwiązaniem było użycie refleksji oraz interfejsów. Podam przykład:
Biblioteka do wysyłana sms i pobierania raportów od operatora. Funkcjonalność w miarę znana, ale różni klienci popodpisywali swoje umowy z różnymi dostawcami, więc trzeba im było dostarczyć inne rozwiązania szczegółowe, wykorzystywane przez ten sam CORE:
a) tworzymy plik dll, w którym mamy klasę abstrakcyjną oraz interfejsy z funkcjonalnościami
b) tworzymy kilka bibliotek z odpowiednią
@StronaGlowna:
Czasami można zrobić jeden widok z opcjonalnymi parametrami, który będzie wypałniany odpowiednio przygotowanymi wcześniej danymi, a innym razem wygodniej będzie pokroić widok na "podwidoki" i różnym klientom prezentować różny szablon z inaczej ułożonymi podwidokami.

Trudno to dokładnie opisać nie znając kodu, projektu, założeń biznesowych oraz miejsc, gdzie występują różnice.
@piot-rabi: A jak trzymać w ogóle informacje o trybie uruchamiania apki? Tzn. czy wszędzie wciskać zawsze najnowszą wersję + parametr w configu, by wyświetlać to w inny sposób, czy może przy wgrywaniu zmieniać parametry kontrolerów / repozytorium (baza) ? Problem też w tym, by jakoś zmigrować już istniejące dane do nowej struktury bazy... Jest jakaś literatura, czy przykłady w internecie żebym mógł zagłębić się w to, co opisujesz ?
@StronaGlowna: gdzie to trzymać? Jak jest mało parametrów, to można to trzymać w web.config, jak jest więcej i chcesz to robić bardziej generycznie / przez refleksję, to lepiej na bazie. Podpinasz inną bazę i ona już wie, czego chce. Decyzję pozostawiam Tobie.

Co do bazy danych, to pozostaje problem "gorilla - banana", czyli jak chcesz do jednej aplikacji dołożyć funkcjonalność "banana", to dokładasz też "gorrille" bo ona została użyta w innej
@StronaGlowna: W zależności jakie to różnice, najlepiej jest móc uruchamiać w zależności od ustawień różnie działające funkcje, czasem może się nie obyć bez kompilacji warunkowej, ale to nie jest najlepsze wyjście.