2009-10-05 9 views
8

Nie chcę tego, aby wszedł w wojnę płomieni między programistami C# i VB.NET. Jest to wyłącznie z punktu widzenia przyszłego działu rozwoju. Jesteśmy firmą VB.NET od lat, ale to głównie ze względu na to, kogo zatrudniliśmy. Ten wymóg odszedł ostatnio z daleka, ponieważ wciągnęliśmy 2 facetów, którzy specjalizują się w C#. Kiedyś byłam facetem w C++/C# przed konwersją na VB.NET dla tej firmy.Jak opracować standard (C# vs. VB.NET)?

Tak więc, dla wszystkich, którzy muszą sobie z tym poradzić bez względu na to, czy chodzi o zatrudnienie, czy o opiekuńczość: jak sobie radzisz z preferowanymi językami standaryzującymi? Jestem skłonny zrobić push dla C#, ponieważ będzie to 3 solidnych deweloperów C# tutaj. Ale ciekawy, co myślą o tym wszyscy.

+2

jak duży jest twój sklep? jeśli to 3 na 6, które specjalizują się w C#, to byłoby stosunkowo łatwo się przełączyć. jeśli jest 3 na 30, trudniej byłoby uzyskać C#. –

Odpowiedz

9

Jeśli masz dużo kodu, który jest już napisany w danym języku, wolisz ten język.

W przeciwnym razie, jeśli masz więcej programistów dobrze zorientowanych w jednym języku niż drugim, wolisz ten język.

W przeciwnym razie preferuj C# (jest na ogół bardziej popularna, a pod względem funkcji nie są na tyle różne, aby dokonać sensownego wyboru samych funkcji).

+0

+1, dobra zwięzła odpowiedź! –

+0

Wygląda na to, że najlepszym sposobem działania dla nas było przejście do sklepu C#. Z początku byłem deweloperem C++ z handlu, więc w połączeniu z grupą deweloperów, którzy zostali zatrudnieni, to C#, a rynek dla C# facetów to był łatwy wybór. Teraz to działa, ponieważ mamy bibliotekę kodu, którą aktualizujemy, aby pasowała do standardów API, więc przełączenie jej na C# powinno być dobrą praktyką. – StephenPAdams

2

Na zasadzie czysto moliwości są one równie bliskie jak dwa języki. VB.NET ma tendencję do większej interaktywności w COM i ma dosłowny XML - ale C# wkrótce to dostanie.

To naprawdę tylko osobiste preferencje i jakim językiem uważasz, że zespół może być najbardziej produktywny w.

4

Kilka lat temu standaryzowany na C# C#, ponieważ wydaje się mieć więcej zwolenników wśród poważnych deweloperów.

Pozwól mi być jasne Nie mówię nic złego o VB.NET lub tych, którzy go używają.

8

W poprzednim kliencie, który napisał swoje aplikacje o znaczeniu krytycznym w VB, zaczęło im się trudniej znaleźć programistów VB w przeciwieństwie do C#.

Więc zdecydowali się rozpocząć przełączanie swoich aplikacji na C#.

Podobnie jak w przypadku większości pytań związanych z IT/Dev, odpowiedź jest zależna. Jeśli masz więcej ludzi w swoim dziale, którzy są świetni w VB, to idź z VB. Nie sądzę, że jeden z nich jest o wiele lepszy od drugiego.

+3

Dokładnie. Wszystko to kompiluje się do CLR przy użyciu tych samych dokładnych bibliotek. Sam język w .NET jest po prostu cukrem syntaktycznym. –

3

Jest to całkowicie zależne od posiadanej puli deweloperów.

5

Pytanie, które zadajesz, jest w rzeczywistości bardzo ważne, a zbyt wiele osób powie Ci, że wybór języka jest tylko osobistym preferencj. Ale już wiesz, że z punktu widzenia organizacji nie jest to prawdą. Wybór standardowego zestawu ram, języków, narzędzi itp. Jest ważną decyzją biznesową.

Twoi programiści powinni umieć posługiwać się dowolnym językiem z niewielką ilością czasu, zachętą i odrobiną szkolenia. C# i VB są bliskie i nie ma istotnych technicznych powodów, aby wybrać jeden z drugim ...

Tak więc radzę wybrać język organizacji w oparciu o względy biznesowe. Jeśli zatrudnianie facetów z C# jest łatwiejsze, lub jeśli okaże się, że mają one lepsze umiejętności do rodzaju wykonywanej pracy, to zdobądź jedną dla C#. Jeśli piszesz kod dla klientów, a ci klienci wolą produkty z C#, to zdobądź inny dla C#. Jeśli masz istniejący kod w VB, oceń go dla VB.

To powinno być dość prosty podział ... po prostu zignorować względów technicznych i skoncentrować się na tym, jak wybór języka wpłynie na działalność w zakresie zatrudniania, szkolenia, możliwość dostarczenia do klienta, itp

1

Wygląda na to, że masz już standard - VB.NET. A może jesteś kuszony lub zainteresowany uzyskaniem C# zamiast tego.

Nie ma sensu, aby połowa systemów została napisana w VB, a połowa napisana w języku C# - chociaż w zależności od rodzaju organizacji może nie mieć zastosowania. Ogólnie jednak organizacja nie powinna lekceważyć tych zmian.

Gdybym był tobą (i jesteś zainteresowany przeniesieniem się do C# dla siebie), wtedy naciskałbym na C#, ale gdybym był biznesem, potrzebowałbym bardzo dobrego powodu, aby wprowadzić tę nową złożoność, koszt zarządzania & kwestia.

5

Jeśli istnieje jeden powód przyjęcia C# dla swojej firmy, jest to operator lambda. Bez pełnego wsparcia operatora lambda w VB.NET niektóre z najlepszych narzędzi stają się albo kalekami, albo DOA. Na przykład: Fluent NHibernate, StructureMap itp.

15

Jako ktoś, kto pracuje w mieszanym sklepie, nie jest trudno uzyskać przy użyciu obu. Ale pomaga mieć standard, który ułatwia przenoszenie kodu tam iz powrotem. Oto kilka pomysłów na swoim standardzie:

Dla Deweloperów VB:

  • Disallow starych funkcji VB6 w stylu nowego kodu. Mówię o łańcuchach i innych funkcjach (Len, InStr, Replace, UBound, itp.). Operatory konwersji (CInt, Cstr itp.) Są nadal w porządku, ponieważ są operatorami językowymi, ale preferują funkcję Convert.To___(), w miarę możliwości dla łatwej konwersji do iz C#.
  • Wymagaj Option Strict i Option Explicit. Rezygnujesz z dynamicznego pisania na klawiaturze, czyniąc go wymogiem w stosunku do silnej sugestii, ale warto zachować parytet kodu z C#.
  • Standaryzacja na '+' vs '&' dla łańcuchów znaków (jeśli nie jesteś już przy użyciu StringBuilder)
  • Wolę AndAlso i OrElse nad And i Or

Dla C# Developers:

  • Odrzucaj nazwy, które różnią się tylko wielkością liter. Dotyczy to w szczególności nazw, które są w zasadzie takie same, jak nazwa typu (SomeType sometype = ...). Powiedz im, aby zamiast tego użyli przedrostka _ (a nie "m_"). Powinieneś to mimo wszystko zrobić, ale jest to szczególnie ważne w mieszanym sklepie, ponieważ kod ten będzie trudniejszy w użyciu w VB.

Dla obu:

  • Disallow ArrayLists i inne zbiory non-generic (ponieważ nie tylko są one złe i tak, ale VB i C# obsłużyć wszystkie wymagane odlewania w bardzo różny sposób, nawet z Option Strict dzięki CType)

Jeśli to zrobisz, nie będzie mało realne różnice między kodem dla dwóch grup, a już pierwszy krok w kierunku nauczania programistów VB myśleć jak C# deweloperów.

+0

Bardzo dobre punkty. Pracuję w sklepie z wyłącznie VB, ale nadal przestrzegamy wszystkich twoich standardów, a przestrzeganie tych zasad skutkuje bardziej niezawodnym i bezpiecznym typem kodu, zgodnym ze standardami ramowymi. –

+0

Nawet "+" kontra "&"? Większość sklepów VB, o których słyszałem, uznałaby to za wstecz. –

+0

Joel, czy mogę uzyskać twoje uzasadnienie na _ przeciw m_? Mieliśmy wewnętrzne dyskusje na ten temat i ustaliliśmy, że to kwestia gustu. Poza tym pojawiły się niejasne odniesienia do _ być zarezerwowane, więc skończyło się na m_. –

3
  1. Porozmawiaj z lokalnymi rekruterami, dowiedz się, jakie dostępne zestawy umiejętności znajdują się w Twojej okolicy, jeśli chcesz zatrudnić więcej programistów. To, co jest dostępne, powinno wpłynąć na twój wybór.
  2. Upewnij się, że twoi programiści mogą pracować z obecną bazą kodów, bez względu na język.
  3. Zapytaj swoich programistów o ich preferencje, ponieważ mogą oni oprzeć swoją decyzję na pozostaniu z firmą w drodze na technologii.
  4. Sprawdź pomoc dotyczącą tych języków w swojej branży. Na przykład kancelaria może wymagać dużej liczby integracji MS Office i VBA. Korzystanie z VB.NET może przynieść korzyści z różnych szkoleń. Lub możesz być w branży, która używa wielu narzędzi opartych na C++, C lub Java. Używanie C# może być bardziej naturalne dla tych programistów.
  5. Sprawdź, jakie rodzaje zasobów szkoleniowych są dostępne w tych językach. Jeśli możesz zdobyć więcej lub taniej szkolenie dla jednego konkretnego języka, możesz go faworyzować.
  6. Zacznij myśleć o swoim planie przejścia na inny język. Nawet jeśli dzisiaj standaryzujesz, co za 5 lat od teraz? Lub 10? Języki się zmieniają, potrzeby się zmieniają.
-1

Powody, dla których warto pójść z jednym standardem w stosunku do innego powinny być czynnikiem wiodącym. Użyj tych:

  1. VB.NET wydaje się dużo bardziej gadatliwy niż C#. (ex: "Dim var jako MyClass" vs "MyClass var")
  2. C# jest podobny do C++ i Java. VB.NET jest podobny do ... cóż, nic. (chyba, że ​​policzycie VB6 ...)
  3. Spróbuj utworzyć ragged array w VB.NET. Wyzywam cię.
+1

1. Gadatliwość nie powoduje problemu z produktywnością, ponieważ IDE wykonuje dla ciebie znaczną część pracy. Na przykład, jeśli wpiszesz "Jeśli coś", naciśnij Enter, Następnie i Zakończ Jeśli jest dodawany automatycznie. –

+0

2. VB.NET ma wyrażenia lambda? 3. VB.NET jest podobny do VB6. Składnia VB i tak jest łatwa do odbioru ... 4. Jagged tablice? Potrzebujesz tego do czego? –

+0

Ups. Nie zdawałem sobie sprawy, że VB.NET może teraz używać wyrażeń Lambda. Ale denerwuję się przy pisaniu "Dim" i "As" za każdym razem, gdy chcę zainicjować zmienną. A jeśli chodzi o prostotę składni VB, to jak testujesz nierówności referencyjne? "Is not" lub "IsNot"? A co powiesz na casting? Czy wolisz zrobić "(int) x" lub "CType (x, int)"? Myślę, że to zabawne, że ktoś mógłby pomyśleć, że VB6 i VB.NET są podobne. Oprócz tego, że wciąż są "Dim" i "As", języki są * radykalnie * różne od punktu, w którym praktycznie nie ma transferu wiedzy z jednego języka na drugi. –

1

Niedawno mieliśmy ten sam problem. Właściwie to po prostu kodujemy oba, w zależności od tego, w jakim oryginalnym projekcie się zaczęło. Dziwnie łatwo przełączać się w tę iz powrotem, szczególnie w Visual Studio (zawsze "przypomina" mi, kiedy zaczynam pisać "bool myvar ...", że "Robię coś nie tak, jeśli jestem w pliku .vb).

Naszym priorytetem jest tak:

  • użyć istniejącego języka, jeśli już mamy kod dla tego projektu/klienta
  • używać języka, który klient preferuje, jeśli dbają
  • używać C# inaczej (Dzieje się tak tylko dlatego, że w C# znajduje się znacznie więcej przykładów, gdy próbujesz znaleźć fragment kodu, aby szybko rozwiązać Twój problem).