Czy ac # dev powinien przejść na VB.net, gdy baza językowa zespołu jest mieszana?

14

Niedawno dołączyłem do nowego zespołu programistów, w którym preferencje językowe są mieszane na platformie .net.

  • Dev 1: Zna VB.net, nie zna c #

  • Dev 2: Zna VB.net, nie zna c #

  • Dev 3: Zna c # i VB.net, preferuje c #

  • Dev 4: Zna c # i VB6 (VB.net powinno być dość łatwe do pobrania), preferuje c #

Wydaje mi się, że liderami myśli w przestrzeni .net są c # devs prawie uniwersalnie. Pomyślałem również, że niektóre narzędzia innych firm nie obsługują VB.net, ale kiedy zacząłem je przeglądać, nie znalazłem dobrych przykładów.

Wolałbym ustawić cały zespół na c #, ale jeśli nie ma żadnego dobrego powodu, aby odepchnąć problem od preferencji, nie sądzę, że jest to właściwy wybór.

Czy są jakieś powody, dla których powinienem odwieść ludzi od VB.net?

Wilman
źródło
5
Szczegółowość samego VB powinna doprowadzić cię do C # ...
Aaron McIver
13
Wydaje mi się, że twój zespół programistów nie ma poważnego przywództwa. Dlaczego Twój menedżer nie poradził sobie z tym problemem?
2
Dlaczego dryfujesz w kierunku VB .Net? Z twojego diagramu powyżej 2 deweloperów z dowolną umiejętnością zarówno C #, jak i inni w ogóle nie znają .Net. Z pewnością najlepiej byłoby przyśpieszyć pracę z tymi, którzy nie znają żadnego języka, ponieważ dwaj inni programiści już dysponują umiejętnościami c #.
15
Pod maską mogą być takie same, ale składnia VB to brzydka, zarażona brodawkami siostra stojąca obok jej gorącej, dobrze skąpanej siostry C #. Składnię należy zapamiętać jedynie jako punkt odniesienia do krwi, która wylała się z oczu wielu programistów, gdy patrzą na własną wersję piekła. VB należy zneutralizować, zabić i pozostawić przy drodze, aby zgniły w ciepłym letnim upale. Przyjmij piękniejszą składnię i unikaj tego, o czym matka natura postanowiła zapomnieć. Wybierz mądrze.
Moo-Juice,
2
Jeśli się nie mylę, Przy wznowieniu błędu Dalej jest wsparcie dla starszych wersji. Spróbuj Catch bloki istnieją w VB.Net ... ponieważ to jest .Net.
Tony Abrams,

Odpowiedzi:

2

Nie ma naprawdę ważnego powodu, aby zmusić kogoś do zmiany języka, chyba że ktoś ma funkcję, która będzie szczególnie przydatna lub pozwoli zaoszczędzić czas dla twojego projektu (projektów). Oba zostaną skompilowane do IL i będą działać równorzędnie (zakładając, że Option Strictjest włączony w VB.NET ... w przeciwnym razie możesz ponieść kary za opóźnione wiązanie). Wszystko inne naprawdę jest preferencyjne (wcale nie odrzucając tego, ale nie jest to obiektywna miara).

Proponuję przejrzeć oferty pracy w Twojej okolicy i zobaczyć, który język jest bardziej rozpowszechniony zarówno w podaży pracy (tj. Pula siły roboczej dla obu języków). Przekonanie się, który z nich zapewni ci większą lub lepszą pulę siły roboczej, będzie prawdopodobnie najbardziej przekonującym wskaźnikiem.

Adam Robinson
źródło
Zgadzam się z tym, co powiedziałeś o lokalnych ofertach pracy. Myślę, że jedną rzeczą, którą łatwo przeoczyć, jest potencjalna pula talentów, a wpływ wyboru jednego języka na drugi może mieć wpływ na twoje przyszłe starania o zatrudnienie.
jjr2527 15.01.11
7

Na szczęście odpowiedź jest prosta: nie ma „najlepszego” języka. Wszystkie języki .NET używają w swoim katalogu głównym funkcjonalności z zestawu klas udostępnianego przez .NET Framework. Dlatego wszystko, co możesz zrobić w VB.NET, możesz zrobić w C # i vice-a-versa. Jedyne różnice między językami są jedynie składniowe.

Programiści C ++, Java i J ++ wolą nonsensowną, zwięzłą składnię C #. Programiści Visual Basic (VB) mogą preferować trzymanie się diabła, którego znają - oparte na języku Visual Basic .NET, bez rozróżniania wielkości liter, pseudo-naturalne podejście językowe. Jeśli masz programistów VB i są oni prawdziwymi programistami (patrz Opcja Strict ON), otrzymasz te same wyniki. VB jest bardziej gadatliwy ... C # to kula z rozróżnianiem wielkości liter.

Anna Karin
źródło
To prawda, że ​​oba mogą zrobić 98%, a drugie może, ALE jest tak wiele lin do powieszenia w VB. On Error Resume Nextsam wysłałby mnie w kierunku C #. ModuleKoncepcja jest również bardzo niebezpieczne. Jest podobny do static classC #, ale ... wszystko w nim jest globalnie dostępne bez odniesienia do klasy nadrzędnej i automatycznie statyczne bez żadnych innych wskazań ... z wyjątkiem tego, że klasa nadrzędna jest modułem ...!
Paul Sasik,
6
Przepraszam za nitpick, ale to po prostu nieprawda. Na przykład, jak napisałbyś filtr wyjątków w C #? blogs.msdn.com/b/clrteam/archive/2009/08/25/…
@LukeH Aby dodać filtr wyjątków do C #, możemy zbudować funkcję w VB lub IL, a następnie wywołać ją w C #: D
4
@ Anna: W ten sposób obalenie twojego stwierdzenia, że „wszystko, co możesz zrobić w VB.NET, możesz zrobić w języku C #” .
2
Istnieje wiele rzeczy, których po prostu nie można zrobić w VB.Net, które można wykonać w języku c # - patrz także: stackoverflow.com/q/2362381/50447
Rowland Shaw
5

Szczerze mówiąc zespół deweloperów powinien używać tego samego języka lub przynajmniej znać te same języki.

Pomoże to w przekwalifikowaniu i wsparciu różnych aplikacji tworzonych przez zespół programistów.

Ostatecznie VB kontra C # to bitwa preferencji, ale zespół powinien znajdować się na tej samej stronie, z której będzie korzystać lub wspierać.

Tony Abrams
źródło
5

Czy ac # dev powinien przejść na VB.net, gdy baza językowa zespołu jest mieszana?

Deweloper powinien używać języka .NET, który jest standardem dla zespołu. IMO powinien używać jednego języka (chyba że można zrobić wyjątkowo przekonujący przypadek).

Czy są jakieś powody, dla których powinienem odwieść ludzi od VB.net?

Myślę, że większość ludzi woli C #, ale nie jest to tak techniczne pytanie, jak decyzja polityczna lub biznesowa. Zdecyduj, jakiego języka .NET użyć, a następnie go użyć. Teraz oczywiście należy wziąć pod uwagę szereg czynników:

  • Czy istnieje baza kodów? W jakim języku napisana jest większość?
  • Czy programiści VB.NET mogą łatwo wybrać C #? Czy oni chcą?
  • Czy finansowo ma sens inwestowanie w zwiększanie / szkolenie C #?
  • W jaki sposób zmiana języka wpłynęłaby na istniejące produkty?
Randy Levy
źródło
+1 za myślenie o zespole, a nie o indywidualnych preferencjach
MarkJ
4

W rzeczywistości VB.NET ma kilka funkcji, których C # obecnie nie ma: literały XML i składnia zapytań do używania metody agregacji w LINQ.

John Saunders
źródło
1
VB.NET również nie ma iteratorów (tzn. Słowo kluczowe Yield w C #).
atconway
2

Byłem w bardzo podobnej sytuacji w 2003 roku, w której teraz jesteście. Zarządzałem zespołem, który przeniósł się do ASP.NET z ASP Classic. Większość naszego zespołu miała doświadczenie z VBScript jako językiem defacto dla ASP, ale około połowa zespołu faworyzowała C # pomimo nieco bardziej złożonej ścieżki migracji z ASP / VBScript. Ostatecznie wybrałem VB.NET, ale z perspektywy czasu naprawdę żałuję, że nie wybrałem trasy C #.

W piątą rocznicę tej decyzji napisałem artykuł na blogu na temat mojego uzasadnienia podjęcia tej decyzji i starałem się przekazać moją perspektywę innym menedżerom ds. Rozwoju, którzy próbują wykonać to samo wezwanie. Oto link do artykułu:

„Retrospektywa menedżera na temat C # a decyzja VB.NET”

Krótko mówiąc, dla tych, którzy nie chcą czytać całego artykułu: nie sądzę, że projekt miał gorszą sytuację, gdy wybrałem VB.NET zamiast C # i prawdopodobnie zaoszczędził nam wiele czasu w krótkim okresie. Największy problem dotyczył rekrutacji. Z przyjemnością wynająłbym programistę C # lub VB.NET do pracy w dowolnym języku. Naprawdę nie różnią się tak bardzo. Jednak niezależnie od tego, czy na to zasłużył, czy nie, VB.NET ma piętno, które powoduje, że spora liczba programistów unika zadań, o których wie, że będą pracować z nim jako językiem podstawowym.

JohnFx
źródło
Jako programista C # pracowałem nad projektami wykorzystującymi VB.NET. Ale programiści VB.NET najczęściej nie wiedzieli, co robią, nie mieli stopni Comp Sci i pisali metody z setkami linii kodu. Dlatego postanowiłem zignorować każde ogłoszenie o pracę, które prosiło o VB.NET.
Ian
1

Skłoniłbym się do C #, ponieważ jest mniej gadatliwy, a z mojego doświadczenia wynika, że ​​jest znacznie bardziej rozpowszechniony w Internecie. Chciałbym również argumentować, że C # lub VB.NET są łatwe i szybkie w nauce, do tego stopnia, że ​​jest znikome i nieistotne. Z kolei platforma .NET jest ogromnym i ciągle ewoluującym stworzeniem. Opanowanie .NET zajmuje wiele lat, ale opanowanie C # lub VB.NET może potrwać kilka miesięcy lub krócej.

Nelson Rothermel
źródło
0

Myślę, że @Anna Karin ma rację, więc nie powinieneś się martwić bibliotekami. Przynajmniej nie pamiętam nikogo, kto po prostu działa z c #, a nie z vb.net.

Inną ważną kwestią jest to, że utrudni to sprawdzanie kodu między członkami tego samego zespołu, jeśli pracują w różnych językach. Myślę, że najlepszym pomysłem jest użycie jakiegoś wspólnego języka, aby zmniejszyć tarcie w komunikacji.

Tiago Deliberali Santos
źródło
0

Chociaż zgadzam się z poprzednią odpowiedzią, że .NET powinien mieć tę samą funkcjonalność, nie zawsze tak jest, ale wystarczająco blisko, jeśli masz prosty projekt, nie powinno to mieć znaczenia.

Głównym powodem, dla którego chciałbym przejść na C # w całym zespole, jest to, że jest to język, w którym jest większość przykładów, a większość projektów open source publikuje kod źródłowy w C #. Więc jeśli twój zespół nie jest w stanie przyciągnąć takiego zasobu, możesz się niepotrzebnie ograniczać.

jjrdk
źródło
0

C # i VB.NET są oparte na platformie .NET; ważne jest, aby programiści pracujący w .NET znali .NET, zasady, techniki, wzorce ... W takim przypadku przełączanie między językami nie będzie stanowiło problemu - chodzi głównie o składnię. W mieszanym zespole może wszyscy powinni spróbować nauczyć się obu języków (to nie jest wielka sprawa), ale może to być ważne dla przyszłej współpracy między członkami zespołu.

Vladimir
źródło
0

Powiedziałbym, że jedną zaletą posiadania tego samego języka jest to, że oznaczałoby to, że każdy programista może pracować na dowolnej części kodu.

Poza tym VB.NET i C # różnią się tylko składnią w .NET. A kod napisany w obu językach może dobrze współistnieć w tym samym projekcie.

Jonathan Wood
źródło
0

Wybrałbym C #, ponieważ:

  • jest bardziej zbliżony do Java i C ++ (języki bardzo często nauczane na kursach CS).
  • istnieje wiele zasobów w Internecie w C # niż w VB (z tego, co tam widziałem).
  • Szanse są większe, aby znaleźć / zatrudnić innych programistów, którzy znają C # lepiej niż VB (z tego, co widziałem w mojej firmie), aby utrzymać projekt.
Andrei Pana
źródło
0

Moim zdaniem byłoby to możliwe dzięki rozwojowi opartemu na kontraktach z interfejsem, a programista powinien być w stanie kodować klasę w dowolnym języku i prawdopodobnie oddzielać klasy niskiego / wysokiego poziomu w różnych zestawach. Tak długo, jak klasy respektują żądany interfejs i implementują wymaganie, nie powinno być problemu.

dvhh
źródło
0

Zgadzam się z wieloma innymi odpowiedziami tutaj. Byłem częścią dwóch zespołów, które musiały podjąć tę decyzję. W obu początkowo zdecydowali, że programiści mogą wybrać, ponieważ oba języki współpracują ze sobą. Jednak w ciągu pierwszego roku oboje chcieli, aby właśnie wybrali C # i nałożyli nowy wymóg, aby wszystkie nowe projekty były w C #.

Beth Whitezel
źródło
0

Powody, dla których warto użyć C #:

  • Sprawiło , że dwaj twoi programiści są do tej pory szczęśliwi i może dobrze zauroczyć pozostałych dwóch, gdy się tego nauczą.
  • W pewnym momencie planujesz zatrudnić więcej programistów i chcesz uniknąć tłumu „20 lat doświadczenia w VB”.
  • Kochasz kręcone szelki.
  • Kochasz życie.

Powody korzystania z VB.NET:

  • Dwóch deweloperów, którzy nie znają C # absolutnie odmawiają nauki.
  • „Przebijanie się drogą najmniejszego oporu” to motto Twojej firmy.
  • Istnieje ogromna baza kodów VB, której nie można zaktualizować.
  • Masz ochotę na HP Lovecrafta i ubolewasz nad brakiem „horrorów eldritcha” w swoim codziennym życiu.
Shog9
źródło