Mam jedno popołudnie, aby wychwalać zalety platformy .NET w porównaniu z VB6… co mam powiedzieć? [Zamknięte]

9

Moja firma to mała dwudziestoosobowa firma inżynierska. Całe programowanie aplikacji jest tutaj wykonywane w VB6 przez dwie osoby, które nauczyły się VB6 od czasu montażu, pracując tutaj przez ostatnie 25 lat i ja.

W rezultacie kod VB6 jest pełen przerażających zapachów kodu, takich jak mnóstwo zmiennych o ciągach tekstowych , strasznie długie funkcje, setki publicznych zmiennych globalnych (niektóre z nich są lepsze niż przekazywanie argumentów i zwracanie wartości), a nie pojedynczy obiekt klasa. Refaktoryzacja jest prawie niemożliwa, a wszelkie zmiany wymagają zbyt dużego przekopania się w kodzie, a raz wprowadzone zawsze wydają się wprowadzać więcej dziur.

Mój szef zdaje sobie sprawę, że VB6 to martwa technologia i chętnie wysłucha moich próśb o przejście na platformę .NET w celu opracowania nowych rozwiązań. Przechodzimy do .NET, ale uważa, że ​​jest to sposób na zachowanie zgodności z nowszymi systemami operacyjnymi Windows, a nie sposób na pisanie lepszego kodu.

Jak najlepiej wyjaśnić zalety języka .NET w porównaniu z VB6, poza zwykłą aktualnością? Co mogę powiedzieć, aby najlepiej podkreślić, że przejście na platformę .NET to dobry krok, ale także , że oznacza to, że nasz obecny paradygmat programowania również powinien zacząć się zmieniać? Gdy tylko mój szef usłyszy, że Visual Basic .NET wygląda jak VB6, wiem, że jego pierwszym instynktem będzie po prostu konwersja naszego starego bałaganu w kodzie do .NET.

Rozumiem, że nie da się zmienić sposobu myślenia nikogo w ciągu jednego popołudnia, ale jak mogę przynajmniej przekonać mojego szefa montażu, że takie rzeczy jak zmienne o silnym typie, niestandardowe klasy i pola prywatne nie są całkowitą stratą czasu i energia?

dlras2
źródło
4
Twórcy VB6 są umierającą rasą? Spróbuj rekrutować programistów .NET i programistów VB6. Zobacz, ile CV dostajesz dla każdego. Fakt, że gdy dwa stare liczniki czasu przejdą na emeryturę, nie będzie wymiany (a raczej bardzo drogiej wymiany) powinien wystarczyć.
Oded
3
Rozumiem, że on może próbować , ale większość szanujących się programistów trzymałaby się martwego języka. Nie jestem pewien, kiedy stwardnienie rozsiane przestanie wspierać VB6, ale coraz trudniej jest znaleźć zasoby (a koniec życia produktu to kolejny argument przeciwko VB6). Nie jestem pewien, jak bardzo to pomoże, ale przestudiuj: msdn.microsoft.com/en-us/vstudio/ms788708.aspx - 2008 był końcem życia IDE. I podoba mi się „Niestandardowe umowy wsparcia mogą być dostępne od Microsoft” - za jaką opłatą, zastanawiam się…
Oded
1
@Oded Niestety, żaden z tych argumentów tak naprawdę nie dotyka faktu, że VB.NET jest użyteczny jako stand-in dla VB6, globalnych zmiennych publicznych i wszystkich innych. Kiedy korzystamy z .NET , jak właściwie wykorzystujemy wszystkie jego zalety?
dlras2
1
Może wyjaśnić przez przykłady. Czy jest jakiś problem trudny do rozwiązania w VB6, który byłby o wiele łatwiejszy do rozwiązania w VB .NET? Czy możesz wybrać kilka przykładów ze swojej bazy kodu i pokazać, jak można je uporządkować w lepszy kod w .NET, który nie byłby możliwy przy użyciu funkcji w VB6?
FrustratedWithFormsDesigner
1
@DanRasmussen VB.NET nie mógł poprawnie zaimportować projektów VB6 (jeszcze naprawiony?). Aktualizacja nie jest trywialna.

Odpowiedzi:

16

Krótka odpowiedź: Nic nie możesz zrobić, aby zmienić zdanie w oparciu o kryteria wymienione w pytaniu, które są wszystkie techniczne . Jest to odpowiednik debaty religijnej . Najszybsza droga do porażki jest przedstawienie argumentów, które nie jest z punktu widzenia publiczności, w tym przypadku biznesowych właścicieli.

Dłuższa odpowiedź: zmiana w biznesie wynika z jednej i tylko jednej rzeczy. Zysk do dolnej linii.

... jak mogę przynajmniej przekonać mojego szefa sumującego, że takie rzeczy, jak zmienne o silnym typie, niestandardowe klasy i pola prywatne nie są całkowitą stratą czasu i energii?

Mogą być nie tylko stratą czasu i energii, ale co ważniejsze, kosztują Cię pieniądze ! Musisz być w stanie wykazać ilościowo, że Twoje sugestie z czasem przyniosą znaczny zysk. Samo twierdzenie, że czysty kod jest „lepszy”, nie wystarczy, ponieważ czysty kod kosztuje znacznie więcej.

Jeśli potrafisz wyartykułować, w jaki sposób doprowadzą do tego koszty korzystania z nowoczesnej technologii ($COST + X) * TIME = $PROFIT, gdzie liczba Xnietrywialna jest dodatnia i TIMEstosunkowo krótka, możesz stworzyć przekonujący scenariusz.

Kolejny sposób obliczenia ROI (zwrot z inwestycji)

Formula ROI

Jeśli ten ROI / ROR jest trywialną liczbą, szczególnie przez długi okres czasu, nie masz zbyt wiele uzasadnienia biznesowego.

Jak Twoja firma faktycznie zarabia pieniądze?

ile wierszy kodu? ilu klientów ile przychodów rocznie wytwarza to oprogramowanie? czy przychody są głównie umowami o wsparcie? czy nowe licencje? czy rynek docelowy jest stabilny? rozszerza się? kontraktować? czy oprogramowanie jest liderem strat w stosunku do innego, znacznie bardziej dochodowego produktu?

Dobry biznesmen nie może zignorować pieniędzy leżących na stole.

Oczywiście musisz być w stanie poprzeć swoje oświadczenia twardymi faktami. Oznacza to, że musisz być w stanie podać rzeczywiste liczby, które pokazują, że naprawdę rozumiesz rzeczywistą działalność, a nie tylko akademickie szczegóły techniczne.

Nie tylko profesjonaliści

Dostarczenie szczegółowej analizy ryzyka i tego, jakie byłyby te ryzyka, $COSTgdyby do nich doszło, poskutkowałyby przekonaniem ich, że masz realistyczny przypadek i nie tylko marudzisz, że nie chcesz już robić VB6.

Nauczanie starych psów nowych sztuczek

... Co mogę powiedzieć, aby najlepiej podkreślić, że przejście na platformę .NET jest dobrym rozwiązaniem, jeśli tylko wtedy, gdy nasz obecny paradygmat programowania również zacznie się zmieniać? ...

Zmiana lub brak Zmiana paradygmatu programowania na możliwie idiomatyczny w stosunku do nowej technologii jest częścią analizy ryzyka. Ale to osobny argument dopiero po tym, jak udowodnisz, że można dokonać znacznych pieniędzy, dokonując zmiany w pierwszej kolejności.

Ludzie biznesu zwykle słuchają spraw biznesowych, tak jak ludzie techniczni zwykle słuchają spraw technicznych. Wszystkie twoje pytania w twoim pytaniu dotyczą zalet technicznych, które są w najlepszym wypadku akademickie w twojej sytuacji.

Prognoza

Przyjmuję tutaj kilka założeń, że aplikacja VB6, mały sklep, kilku programistów, 2 starszych deweloperów / właścicieli firm wskazuje na niszową aplikację rynkową, która prawdopodobnie jest dojrzała (znane są błędy i obejścia), dość kompletna i stosunkowo stabilna, niezależnie od tego o „bałaganie” baza kodu jest. To prowadzi mnie do przekonania, że ​​liczba małych użytkowników również nie rośnie dramatycznie z roku na rok, co prowadzi mnie do następującego wniosku.

Że tak naprawdę nie będzie żadnego istotnego interesującego powodu biznesowego do zmiany kierunku technicznego dzięki tej aplikacji. A nawet przenoszenie do VB.Net to strata czasu, a także dlatego po prostu trzeba się bałagan , ale teraz bardziej od niego, a 2/3 z deweloperami nie dedykowany do nauki czegoś nowego. Powodzenia.

Glorfindel
źródło
2
niestety, koszt przepisywania (plus szkolenie, i zdobywanie wiedzy) zwykle przewyższa koszt utrzymania aplikacji, przynajmniej w krótkim i średnim okresie. Jednak w dłuższej perspektywie istnieje ryzyko, że samo przepisanie może wymagać przepisania w $ next_new_technology.
gbjbaanb
4
+1 debata religijna. Jeśli OP chce pracować w .NET, powinien dostać pracę w sklepie .NET; Powiedziałbym, że przejście z VB6 na .NET w tej firmie jest dużym ryzykiem z wątpliwymi korzyściami.
Kirk Broadhurst
Świetna odpowiedź, z wyjątkiem tego, że przerzuciłeś jego zdanie na temat: „Refaktoryzacja jest prawie niemożliwa, a wszelkie zmiany wymagają zbyt dużego przekopania się w kodzie, a raz wprowadzone wydają się zawsze wprowadzać więcej dziur”. To ostatnie stwierdzenie, które ma wartość dla firmy. Wykazanie, że nie są w stanie zmienić bazy kodu bez znacznego kosztu pieniędzy biznesowych, jest bardzo ważnym argumentem zgodnym z twoją odpowiedzią. Oczywiście, wskaźniki muszą istnieć, aby poprzeć to oświadczenie.
@ GlenH7 osobiście uważam, że zacytowałeś dramatyczną osobistą opinię i retorykę, ponieważ OP nie interesuje się niczym innym, jak przekazywaniem ich osobistych opinii i agendy. Moja odpowiedź to zaproponowanie, aby nie zastanawiali się, jaki byłby prawdziwy motor zmian i nie jest to, co myślą lub zastanawiają się. Chodzi mi o to, że zmiany długoterminowe, które są „drogie” , zawsze będą tańsze niż to, co proponują w tym samym czasie. Robiąc to, co powiedzieli, a co przytaczasz nie do obrony argument biznesowy.
Zgodził się, że w oświadczeniu jest pewien stopień retoryki. Niektóre sklepy (i nie, zazwyczaj nie są małe) śledzą awarie / ucieczki, więc możliwe jest generowanie twardych danych na temat błędów. OTOH, większość sklepów nie przechowuje tych informacji i jest to tylko „przeczucie”, które nie ma większego znaczenia w prezentacji biznesowej.
11

Mam klienta, którego sztandarowy produkt jest napisany w VB6 i obsługiwany przez 3 osoby. Przyszedłem im pomóc, ponieważ mieli partnera, który chciał, aby zadzwonili do serwisu internetowego. Jest to bardzo trudne z VB6, ale łatwe z VB.NET lub C #, i napisałem im zestaw .NET, który wyglądał na VB6 jak komponent COM, aby mogli go nazwać. Następnie musieli zaoferować komuś usługę internetową. Potem chcieli napisać trochę samodzielnego narzędzia i będzie musiał zaszyfrować i odszyfrować niektóre informacje oraz parsować trochę XML. Nauczyłem ich pisać w .NET. W ciągu ostatnich 5 lat coraz więcej ich kodu znajduje się w .NET, chociaż flagowy produkt wcale się nie skurczył. Są to części, których nienawidzą - każda aplikacja je ma - i gdzie mogą, wyciągają te części (teraz zaczyna się kurczenie) i oddają je do usług lub oddzielnych narzędzi. Reszta zostanie przekonwertowana na holus-bolus na .NET. Tak, złe nazwy zmiennych i tak dalej - moim zdaniem przejście na platformę .NET przynosi wiele korzyści, nawet jeśli nie zmieniają obecnego paradygmatu programowania. Obejmują one:

  • możesz korzystać z najnowszego programu Visual Studio z lepszym wyszukiwaniem, lepszym Intellisense, szybszymi kompilacjami itp
  • możesz zintegrować z przyzwoitym systemem kontroli źródła (tj. nie VSS)
  • istnieją biblioteki, które są dostarczane z .NET za darmo, które wykonują krótką pracę w zakresie szyfrowania, parsowania XML, przetwarzania obrazu i innych
  • internacjonalizacja i lokalizacja jest znacznie łatwiejsza w przypadku projektu .NET (to, po zapytaniu ogromnego klienta z Kanady, który potrzebowałby zarówno wersji francuskiej, jak i angielskiej, mogło wywrócić równowagę dla mojego klienta)
  • niedrogie biblioteki kontrolne (Telerik, Infragistics, ComponentOne itp.) dają niesamowite możliwości prawie za darmo
  • o wiele łatwiej będzie znaleźć tymczasową pomoc, jak student letni, w okolicznościach, w których czas poświęcony na ich nauczanie VB6 nie jest tego wart (nie rozmawiaj o tym, jak się czujesz, ucząc go o nowej pracy na pełen etat)
  • Twoja aplikacja będzie obsługiwać UAC, więc będzie działać lepiej w systemach Vista, 7 i 8. Nie trzeba jej uruchamiać w trybie zgodności z XP

Jest więcej, ale na pewno to wystarczy?

Kwestia programowania paradygmatów, silnego pisania na klawiaturze, kompilator jest twoim przyjacielem, enkapsulacja jest twoim przyjacielem i tak dalej jest moim zdaniem (i dostaję zapłatę za te opinie) całkowicie osobno. Jeśli chcesz zginąć na tym wzgórzu, śmiało, ale umrzesz z otwartą kopią VB6.

Kate Gregory
źródło
Co rozumiesz przez swój akapit końcowy?
dlras2
6
To, że „przejście na platformę .NET” i „zaprogramujmy wszystko inaczej” jest inne i że jeśli zdecydujesz się walczyć z drugim, nie tylko nie odniesiesz sukcesu, ale na pewno nie zamierzasz go przenieść. NET z takim podejściem. To znaczy, zgadzam się, że powinni programować w inny sposób. Ale najlepszą ścieżką do .NET jest „jak masz teraz, ale z sosem czekoladowym i posypką!”
Kate Gregory
Rozumiem korzyści płynące z podejścia do nich jako różnych problemów, ale problem polega na tym, że podejście do nich jako oddzielnych problemów zapewnia po prostu równie nieusuwalne programy, tylko w .NET.
dlras2
1
Będziesz miał lepsze aplikacje (ładniejsze kontrole, więcej funkcji) i trochę lepszy proces (podkradanie się w kontroli źródła, a może nawet śledzenie elementów pracy) wraz z programistami, którzy teraz widzą, że można to zrobić inaczej i że warto zmienić się z powodu tych wielkich korzyści. Będą bardziej otwarci na następną rzecz, o którą ich poprosisz. A „nie do utrzymania” nie jest binarne. Kod nie będzie świetny, ale sytuacja będzie nadal lepsza niż była. Ty też udowodnisz swoją wiarygodność.
Kate Gregory
8

Zacząłem od projektu VB6 kilka lat temu (niestandardowy system ERP firmy) i powoli migrowałem go do .NET. Jest gdzieś w połowie gotowy.

Po pierwsze, konwersja z VB6 do VB.Net jest prawie zawsze złym pomysłem (i przeprowadziłem wiele badań na ten temat). Jest po prostu zbyt wiele różnych. Ponadto, jeśli twój szef uważa, że ​​VB.Net jest „taki jak VB6”, to jest całkowicie w błędzie i musisz szybko zmienić jego spojrzenie.

Moją strategią było oddzielenie dwóch baz kodu i utrzymanie ich osobno, a następnie powolne przenoszenie całych modułów z VB6 na .NET, ale tylko wtedy, gdy nastąpiła znacząca zmiana w tym module, abyśmy mogli amortyzować część kosztów. Mimo to przepisywanie jest dużym kosztownym i ryzykownym zadaniem.

Istnieją dwa sposoby integracji istniejącego VB6 z nowym kodem .NET (prawdopodobnie będziesz to robił przez bardzo długi czas, więc lepiej przyzwyczaj się do tego pomysłu). Pierwszym sposobem, w jaki to zrobiłem, było rozpoczęcie pisania małych modułów w .NET, a następnie uruchomienie przez główną aplikację VB6 pliku wykonywalnego .NET z przekazaniem niektórych parametrów wiersza poleceń. To zadziałało, ale należy pamiętać, że .NET ma czas uruchamiania od 4 do 10 sekund, więc masz ograniczone możliwości tego, co możesz zrobić.

Kiedy zaczęło być naprawdę bolesne, przerzuciłem strategię i użyłem metody z tego artykułu CodeProject, aby wyświetlić istniejące formularze VB6 w mojej głównej aplikacji .NET. Gdy zszedłem tą drogą, byłem w stanie ponieść tylko jeden czas uruchamiania .NET i użyć ClickOnce do wdrożenia, co było darem niebios w porównaniu do tego, jak wcześniej aplikacja VB6 była wdrażana.

To powiedziawszy, oto zalety, które znajduję w .NET w porównaniu z VB6:

  • Lepsze ramy trwałości (NHibernate, EntityFramework, Linq2Sql itp.)
  • LINQ (nie mogę wystarczająco podkreślić, jak ważne jest to)
  • Generics!
  • Składnia lambda (elegancko rozwiązuje całą klasę problemów, takich jak „dziura w środku”)
  • Podobnie Actioni Functypy
  • Odbicie (coś, czego rzadko używasz, ale kiedy to robisz, jest ogromne)
  • Znacznie lepsze wsparcie w zakresie testów jednostkowych (oczywiście wątpię, czy uda ci się przekonać innych pracowników do testów jednostkowych, ale powinieneś)
  • ReSharper (i inne narzędzia do refaktoryzacji / profilowania) (10 razy lepsze niż MZ-Tools)
  • ClickOnce i / lub projekty instalacji / instalatora
  • Projekty usług Windows
  • Prawdziwa obsługa obiektowa (VB6 jest oparty na COM i jest naprawdę zły w tym dziale).
  • Pisanie statyczne
  • Wypiekane w obsłudze XML
  • Formularze WPF i Windows (formanty VB6 są bardzo ograniczone)
  • WCF
  • Znacznie więcej przykładowego kodu online
  • Wyjątki (obsługa błędów w VB6 jest absolutnie okropna w porównaniu)
  • Integracja kontroli źródła w Visual Studio
  • Decimal type (VB6 nigdy nie miał pierwszej klasy dziesiętnej, mimo że ma CDec)
  • Wsparcie pierwszej klasy dla Guid
  • Obsługa pierwszej klasy 64-bitowych liczb całkowitych
  • Lepsze biblioteki kolekcji
  • ReportViewer
  • Wielowątkowość, biblioteka zadań równoległych

Wady VB6:

  • Zauważysz występ. Być może nie wystarczy się martwić, ale zaufaj mi, zauważysz to. W końcu VB6 kompiluje się do kodu natywnego.

Aby być uczciwym, oto kilka wad utrzymywania połączonego rozwiązania VB6 / .NET:

  • Utrzymanie dwóch warstw dostępu do danych (zakładając, że twoja aplikacja VB6 faktycznie ma jedną)
  • Dodatkowe okablowanie w celu ujawnienia usług / formularzy / itp. z jednej strony na drugą
  • Dwa razy więcej złożoności / architektury, aby zachować w głowie

Teraz, jak już wspomniałeś, naprawdę powinieneś odbudować architekturę od podstaw, jeśli zaczniesz pisać kod w .NET. Wydaje się jednak, że żadna z osób w Twojej firmie nie zna ani świata programowania .NET i / lub Java, skąd bierze się wiele wzorców i praktyk wspólnych dla platform dużych przedsiębiorstw.

Jeśli weźmiesz kogoś, kto przywykł do przeciągania przycisku w formularzu, dwukrotnego klikania na niego i pisania ciągów SQL bezpośrednio w module obsługi zdarzeń kliknięcia, i to działało dla nich, naprawdę trudno jest przekonać ich, aby korzystali z SOLID zasady projektowania. Z drugiej strony, jeśli ugryziesz pocisk i zdecydujesz, że cały nowy kod zostanie objęty 90% lub więcej zautomatyzowanymi testami jednostkowymi, szybko zdasz sobie sprawę, że to naprawdę trudne, chyba że zastosujesz zasady SOLID.

Musisz więc bardzo uważnie przyjrzeć się rzeczywistości. W moim przypadku byłem jedynym programistą i postanowiłem przetestować cały nowy kod jednostkowo, mimo że nie miałem z nim doświadczenia. Nie mogę wystarczająco podkreślić, jak bardzo to wpłynęło na to, co mogłem zrobić w pierwszym tygodniu, nawet w pierwszych miesiącach. Mimo to byłem zdeterminowany, aby to zrobić i miałem wykupienie od kierownictwa. Większość ludzi nie ma tego luksusu. Teraz mam dużo kodu i właśnie zakończyłem poważną refaktoryzację prawie bez problemów.

Realistycznie nie zamierzasz przeprowadzać testów jednostkowych, co oznacza, że ​​trudniej jest uzasadnić takie zasady, jak zastrzyk zależności dla członków zespołu. Będziesz musiał sprzedawać platformę .NET w oparciu o zalety inne niż korzyści architektoniczne. Musisz skupić się na lepszej obsłudze bibliotek i lepszych narzędziach. To jedyna rzecz, która rezonuje. Proponuję następujące w twoim demo:

  • Utwórz projekt Windows Forms (trzymaj się z dala od WPF i xaml - to zbyt zaskakujące)
  • Połącz się z bazą danych SQL (niektóre testowe bazy danych)
  • Użyj Linq2Sql lub EntityFramework, aby wygenerować dla niego model danych
  • Utwórz klasę repozytorium, która ma metodę zwracania pewnej listy encji
  • Napisz zapytanie w tej metodzie za pomocą linq, wskaż inteligencję
  • Wskaż, że linq działa na wszystkich obiektach, nie tylko na jednostkach
  • Pokaż, że jeśli zmienisz bazę danych i ponownie wygenerujesz model, pojawi się błąd kompilacji
  • Upuść a DataGridVieww oknie głównym
  • Zademonstruj wiązanie danych, wypełniając siatkę elementami z repozytorium
  • Wskaż wszystkie fajne rzeczy na temat siatki, które są o wiele lepsze niż VB6
  • Utwórz plik .rdlc (raport)
  • Zrób prosty raport w Visual Studio
  • Upuść przeglądarkę raportów w oknie i wyrenderuj raport w przeglądarce raportów
  • (Oczywiście musisz zainstalować ReportViewer i najpierw przećwiczyć to wszystko)
  • Wpadnij na problem „dziury w środku”, a następnie zademonstruj jego rozwiązanie, tworząc metodę, która przyjmuje Actionjako parametr. Zrób to najpierw, przekazując inną metodę jako parametr, a następnie oszalej, przekazując anonimowego delegata za pomocą składni lambda
  • Zademonstruj generyczne za pomocą klas List<T>i Dictionary<T1,T2>kolekcji i pokaż, w jaki sposób tworzy silnie napisany kod (VB6 ma podobne rzeczy, ale jest dynamicznie typowany)
  • Napisz foreachzawstydzająco równoległą pętlę, użyj System.Diagnostics.Stopwatchdo pomiaru czasu potrzebnego do wykonania, a następnie użyj biblioteki zadań równoległych, aby zmienić pętlę w Parallel.Foreachpętlę i zademonstrować przyspieszenie, zakładając, że korzystasz z komputera wielordzeniowego.
  • Zademonstruj możliwość dodania globalnego modułu obsługi wyjątków (jest to coś, czego VB6 nie może zrobić)

Tak bym zrobił.

Scott Whitlock
źródło
1

Wydaje mi się, że jest to sytuacja, w której będziesz musiał założyć kapelusz polityczny zamiast programującego. Musisz bardzo uważać na swoje argumenty i nie antagonizować odbiorców. Upewnij się, że pokazujesz zalety .Net, zamiast pokazywać wady VB. Argumentowanie wad VB sprawi, że Twoi współpracownicy będą musieli bronić swoich decyzji i zmuszą ich do przyznania, że ​​język, w który zainwestowali, jest złym językiem. Zamiast tego pokaż im, jak przejście na platformę .NET zwiększy dostępne im narzędzia i ułatwi ich życie.

Moim idealnym sposobem na zrobienie tego argumentu byłoby znalezienie zadania lub fragmentu kodu, na który wszyscy narzekają, i naprawienie go za pomocą .NET. Nie znam się szczególnie na VB, ale oto krótka lista irytujących zadań, które prawdopodobnie mogłyby być łatwiejsze przy użyciu .NET zamiast VB.

  • Manipulacja ciągiem
  • Analiza XML
  • Wyszukiwanie / Dopasowywanie / Regex
  • Matematyka (nowsze języki mają zwykle szybsze, bardziej wszechstronne biblioteki matematyczne)
  • Budowa / projekt GUI

Wybierz dowolne z powyższych zadań lub inne zadanie specyficzne dla projektów, nad którymi zwykle pracujesz, i usiądź przy nich i faktycznie napisz kod od zera, który szybko i łatwo poradzi sobie z tym problemem. Właściwie pokazanie procesu pisania kodu pokaże narzędzia, które nowsze wersje VS wnoszą do tabeli i dostarczy dowodów, że przejście na .NET nie utrudni nikomu życia.

Wchodząc w to, absolutnie, pozytywnie musisz odrobić pracę domową. Jeśli pokażesz się niepewnie, jak działają narzędzia lub masz kod, który nie działa poprawnie, nigdy nie będziesz w stanie ich przekonać.

TwentyMiles
źródło
0

Pierwszą rzeczą, którą mówisz, jest to, że VB6 nie jest już obsługiwany przez Microsoft. Chociaż możesz utrzymać go w działaniu, musisz zrozumieć, że jego opcje w perspektywie długoterminowej są zerowe. Nie wiem nawet, czy aplikacje VB6 będą działały na Windows8, czy też samo IDE będzie działało na Win8.

Tak więc ostatecznie musisz ostatecznie przepisać, a jeśli tak jest, możesz zacząć od teraz, a nie później, dając mnóstwo czasu na zastanowienie się, jakiej nowej technologii chcesz użyć (podczas gdy VB.NET brzmi idealnie, jest to okazja, aby wypróbować coś bardziej nowatorskiego, na przykład uruchomić aplikację na iPadzie).

W krótkim okresie możesz nieco złagodzić ten problem, wprowadzając nowe sekcje jako komponenty COM dla istniejącej aplikacji do użycia, mam nadzieję, że te komponenty pozostaną, gdy nastąpi nieuniknione przepisywanie.

Nie zawracałbym sobie głowy technicznymi argumentami, dlaczego .NET jest lepszy od VB6. Będziesz tam przegrać, technologia sama w sobie nigdy nie rozwiąże problemów. To, jak zastosujesz tę technologię, zależy od Ciebie, a jeśli aplikacja VB6 rozwiązuje problemy za Ciebie, nie ma argumentów do odpowiedzi. Możesz mówić o łatwości konserwacji lub dostępności doświadczonego personelu, ale kiedy to zrobisz, przyznasz, że twój obecny personel nie ma specjalistycznej wiedzy na temat nowej technologii i będzie musiał zostać przeszkolony, a następnie poświęć trochę czasu, aby w pełni przyspieszyć z tym. Będziesz także musiał odpowiedzieć na pytania o to, jak wiele przeróbek kończy się gorzej niż oryginalny projekt (czasami z powodu braku wiedzy, czasem z powodu zbyt dużych projektów).

gbjbaanb
źródło
MS będzie wspierać VB6 na komputerach Intel / AMD z systemem Windows 8. Nie możesz pisać aplikacji Metro w VB6, ale nie możesz pisać aplikacji Metro w .NET. Oba są oparte na systemie Win32. Przynajmniej kod napisany w C # dla .NET powinien być łatwiejszy do przeniesienia do WinRT, aby działał na Metro, ale nie licz na to, że będzie to prosta przebudowa.
Scott Whitlock
0

Daj mu analogię „stary samochód nowy vs samochód”:

Tak, oba zapewne doprowadzą Cię do celu. Jednak nowy samochód nie potrzebuje korby , nie potrzebuje dławika , nie potrzebuje map , jego koła nie blokują się podczas gwałtownego hamowania, a na koniec znacznie bardziej prawdopodobne jest odejście od wypadku samochodowego .

  • VB6 to starsza wersja, to nowy COBOL
  • .NET ma lepsze frameworki
  • .NET ma lepsze oprzyrządowanie
  • .NET ma lepszą wydajność
  • .NET ma lepsze IDE
  • .NET ma lepszą obsługę języków
  • .NET ma lepsze funkcje
  • .NET ma lepszą obsługę społeczności
Ciemna noc
źródło
7
Analogie samochodowe zwykle zawodzą, a twoje nie jest inaczej. To, co ma stary samochód , a czego nie ma w nowym samochodzie , jest opłacane! Jeśli posiadałeś taksówkę, za którą zapłacono, a zarabiałeś więcej, niż koszt obsługi, a nowy samochód kosztowałby więcej pieniędzy, niż zapłaciłby, którą wolałbyś jako przedsiębiorca?
2
@JarrodRoberson Jest opłacony, ale mają tendencję do częstszego hamowania, a po pewnym czasie przestają działać. Analogie samochodowe są świetne. :)
Steven Jeuris
1
W rzeczywistości ta analogia samochodu jest dobra. Szef OP ma tę taksówkę, a OP powinien wziąć to pod uwagę, zbliżając się do niego. Pełny przełącznik nie może się zdarzyć w ciągu jednego dnia, ale zacznijmy przenosić bity, zmieniać elementy jeden po drugim.
ZJR
1
Właściciel firmy sam go zaprojektował i zbudował . Najprawdopodobniej zwrócił się wiele razy, a konserwacja jest bezpłatna, ponieważ jest tylko 3 programistów, a on jest jednym z nich. Jak już powiedziałem, analogie samochodów są okropne, szczególnie te, a ty argumentujesz za mną swoimi argumentami, które są całkowicie poza biznesem. Nowe oprogramowanie w najlepszym wypadku sprawi, że będzie on z roku na rok znacznie mniejszy, a w najgorszym przypadku stracą pieniądze na czas nieokreślony.
2
Aplikacje nie mają entropii zużycia, podobnie jak przedmioty fizyczne, nie ulegają też naturalnemu zanikowi, więc nie zużywają się , ani nie psują się niezależnie od zastosowania, więc analogie do przedmiotów fizycznych, zwłaszcza samochodów, nie mają zastosowania. Aplikacja będzie działać wiecznie, o ile tylko spełni swoje zadanie. Jedna firma, z którą pracowałem kilka lat temu, miała starą maszynę opartą na MS-DOS, która kontrolowała czytniki kart na drzwiach. Pomysł, że oprogramowanie zużywa się, jest głupi. To powiedziawszy, dobry plan końca życia powinien być zawsze na miejscu. Nawet jeśli ten plan nigdy nie polega na ponownym napisaniu oprogramowania.
0

Po pierwsze, myślę, że powinieneś zmienić pytanie (nie dotyczy wymiany stosów, ale w twojej firmie). Nie jest tak bardzo, dlaczego .Net jest lepszy od VB6, ale bardziej, ponieważ VB6 nie jest już obsługiwany, nadszedł czas, aby przejść dalej, ale do czego. Zapytaj interesariuszy, czym powinna być ta „nowa” technologia? Może to nie jest .Net.

Ale brzmi to tak, jakbyś musiał przejść na nową technologię ORAZ wdrożyć dobre wzorce i praktyki programowania. Odpowiedź na drugą część jest znacznie trudniejsza. Prawdopodobnie musisz to zrobić w niewielkiej części aplikacji i udowodnić, że warto, to jest bardziej stabilna, łatwiejsza w utrzymaniu itp.

ciemny suwak
źródło
-1

Powiedz swoim szefom, żeby napisali dwie reklamy. Jeden dla programistów C #. Jeden dla ekspertów VB6. Połóż je tam. Porównaj wyniki.

Erik Reppen
źródło