Должен ли ac # dev переключаться на VB.net, когда языковая база команды смешана?


14

Недавно я присоединился к новой команде разработчиков, где языковые предпочтения смешаны на платформе .net.

  • Dev 1: Знает VB.net, не знает c #

  • Dev 2: Знает VB.net, не знает c #

  • Dev 3: Знает c # и VB.net, предпочитает c #

  • Dev 4: Знает c # и VB6 (VB.net должен быть довольно легко подобран), предпочитает c #

Мне кажется, что лидерами мысли в .net-пространстве являются разработчики c # практически повсеместно. Я также подумал, что некоторые сторонние инструменты не поддерживают VB.net, но когда я начал изучать его, я не нашел хороших примеров.

Я бы предпочел, чтобы вся команда работала на c #, но если нет веских причин для отстранения проблемы от предпочтений, я не думаю, что это правильный выбор.

Есть ли какие-то причины, по которым я должен увести людей с VB.net?


5
Многословие в одном только VB должно привести вас к C # ...
Аарон Макивер

13
Похоже, вашей команде разработчиков не хватает серьезного руководства. Почему ваш менеджер не занимался этой проблемой?

2
Почему вы дрейфуете к VB .Net? Из приведенной выше схемы 2 разработчика с любым навыком знают C #, а остальные вообще не знают .Net. Конечно, было бы лучше довести до сведения тех, кто не знает ни одного языка, с C #, так как два других разработчика уже имеют навыки работы с C #?

15
Под капотом они могут быть одинаковыми, но синтаксис VB - это уродливая сестра, зараженная бородавками, стоящая рядом с ее горячей, хорошо купавшейся сестрой C #. Его синтаксис следует помнить только как точку отсчета крови, которая пролилась из глаз многих разработчиков, когда они смотрят на свою собственную версию ада. VB следует кастрировать, убить и оставить на обочине дороги, чтобы гнить в теплой летней жаре. Примите более красивый синтаксис и избегайте того, что мать-природа решила забыть. Выбирай с умом.
Му-сок

2
Если я не ошибаюсь, On Error Resume Next для устаревшей поддержки. Попробуйте Catch-блоки существуют в VB.Net ... так как это .Net.
Тони Абрамс

Ответы:


2

Нет действительно убедительной причины заставлять кого-то менять языки, если у кого-то нет функции, которая будет особенно полезна или экономит время для вашего проекта (-ов). Они оба будут компилироваться в IL и работать одинаково (при условии, что Option Strictэто включено в VB.NET ... в противном случае вы можете понести штрафы за позднее связывание). Все остальное действительно является преференциальным (не отрицать это вообще, но это не объективная метрика).

Я бы посоветовал взглянуть на списки вакансий в вашем регионе и посмотреть, какой язык является более распространенным как в предложении работы (т. Е. Объединение труда для обоих языков). Видение того, какой из них обеспечит вам больший или лучший трудовой резерв, вероятно, станет вашим наиболее убедительным показателем.


Я согласен с тем, что вы сказали о местных списках вакансий. Я думаю, что одну вещь, которую легко упустить из виду, - это потенциальная кадровая база, и влияние выбора одного языка на другой может повлиять на ваши будущие усилия по найму.
jjr2527

7

К счастью, ответ прост: нет «лучшего» языка. Все языки .NET используют в своей основе функциональность из набора классов, предоставляемых .NET Framework. Следовательно, все, что вы можете делать в VB.NET, вы можете делать в C # и наоборот. Единственные различия между языками - только синтаксическая.

Программисты на C ++, Java и J ++ предпочтут краткий синтаксис C #. Программисты Visual Basic (VB) могут предпочесть придерживаться того дьявола, которого они знают - Visual Basic .NET без учета регистра, псевдо-естественного языка. Если у вас есть программисты VB, и они настоящие программисты (см. Option Strict ON), вы получите те же результаты. VB более многословен ... C # - бейсболист с чувствительностью к регистру.


Правда, оба могут сделать 98%, что другой может, НО есть так много веревки, чтобы повеситься в VB. On Error Resume Nextодин отправит меня к C #. ModuleКонцепция также очень опасно. Это похоже наstatic class в C #, но ... все в нем доступно глобально без ссылки на родительский класс и автоматически статично без каких-либо других указаний ... за исключением того, что родительский класс является модулем ...!
Пол Сасик

6
Извини за придирку, но это просто неправда. Например, как бы вы написали фильтр исключений в C #? blogs.msdn.com/b/clrteam/archive/2009/08/25/…

@LukeH Чтобы добавить фильтр исключений в C #, мы можем построить функцию в VB или IL, а затем вызвать ее в C #: D

4
@ Анна: Таким образом, опровергая ваше утверждение, что «все, что вы можете делать в VB.NET, вы можете делать в C #» .

2
Есть довольно много вещей, которые вы просто не можете сделать в VB.Net, которые вы можете сделать в c # - см. Также: stackoverflow.com/q/2362381/50447
Роуланд Шоу,

5

Честно говоря, команда разработчиков Dev должна использовать один и тот же язык или, по крайней мере, знать одни и те же языки.

Это поможет в перекрестном обучении и поддержке различных приложений, которые создает команда разработчиков.

В конце концов, VB против C # - это битва предпочтений, но команда должна быть на той же странице, на которой она будет использовать или поддерживать.


5

Должен ли ac # dev переключаться на VB.net, когда языковая база команды смешана?

Разработчик должен использовать язык .NET, который является стандартом для команды. ИМО, должен быть один язык, который используется (если не может быть сделано чрезвычайно убедительное доказательство).

Есть ли какие-то причины, по которым я должен увести людей с VB.net?

Я думаю, что большинство людей здесь предпочитают C #, но это не столько технический вопрос, сколько политическое или деловое решение. Определите, какой язык .NET использовать, а затем используйте его. Теперь, очевидно, есть куча факторов, которые необходимо учитывать:

  • Существует ли существующая кодовая база? На каком языке написано большинство?
  • Могут ли разработчики VB.NET легко освоить C #? Они хотят?
  • Имеет ли смысл вложения средств в развитие и обучение C #?
  • Как любой язык может повлиять на существующие результаты?

+1 за размышления о команде, а не об индивидуальных предпочтениях
MarkJ

4

Фактически, в VB.NET есть несколько функций, которых в настоящее время нет в C #: литералы XML и синтаксис запроса для использования метода Aggregate в LINQ.


1
VB.NET также не имеет итераторов (т.е. ключевое слово Yield в C #).
atconway

3

Вы можете проверить эти три статьи, которые сравнивают C # и VB.NET:

Все они, кажется, дают очень логичные аргументы и сравнения между ними. Лично я голосую за C # (моя компания выбрала C # для наших проектов ASP.NET, когда мы перешли от классической ASP).


2

В 2003 году я был в очень похожей ситуации, в которой вы находитесь сейчас. Я управлял командой, которая переходила на ASP.NET из ASP Classic. Большая часть нашей команды имела опыт работы с VBScript в качестве языка де-факто для ASP, но примерно половина команды предпочла C #, несмотря на немного более сложный путь перехода с ASP / VBScript. В конечном итоге я выбрал VB.NET, но, оглядываясь назад, я действительно хотел бы пройти путь C #.

В 5-летний юбилей этого решения я написал статью в блоге о моем обосновании принятия решения и попытался дать преимущество моей ретроспективе другим менеджерам по развитию, пытающимся сделать тот же самый звонок. Вот ссылка на статью:

«Ретроспектива менеджера по решению C # против VB.NET»

Короче говоря, для тех, кто не хочет читать всю статью: я не думаю, что проект был более плохим для выбора VB.NET вместо C #, и, вероятно, сэкономил нам много времени в краткосрочной перспективе. Самая большая проблема была с рекрутингом. Я бы с радостью нанял программиста на C # или VB.NET для работы на любом языке. Они действительно не так уж сильно отличаются. Тем не менее, независимо от того, заслуживает он этого или нет, в VB.NET существует стигма, которая заставляет большое количество разработчиков избегать рабочих мест, где они знают, что будут работать с ним в качестве основного языка.


Как программист C # я работал над проектами, которые используют VB.NET. Но чаще всего программисты VB.NET не знали, что делают, не имели степеней Comp Sci и писали методы с сотнями строк кода. Поэтому я склонен игнорировать любое объявление о работе, которое просило VB.NET.
Ян

1

Я бы склонялся к C #, потому что он менее многословен и по моему опыту гораздо более распространен в Интернете. Я также утверждаю, что C # или VB.NET легко и быстро изучить, до такой степени, что это незначительно и незначительно. Платформа .NET, с другой стороны, огромна и постоянно развивается. Освоение .NET занимает много лет, но освоение C # или VB.NET может занять несколько месяцев или меньше.


0

Я думаю, что у @Anna Karin есть хорошая точка зрения, поэтому вам не нужно беспокоиться о библиотеках. По крайней мере, я не могу вспомнить ни одного, который просто работает с c #, а не с vb.net.

Другим важным моментом является то, что это усложнит проверку кода между членами одной команды, если они работают с разными языками. Я думаю, что это лучшая идея использовать какой-либо язык общения, чтобы уменьшить трения в общении.


0

Хотя я согласен с предыдущим ответом, что .NET должен быть одинаковым по функциональности, это не всегда так, но достаточно близко, чтобы, если у вас простой проект, это не имело значения.

Основная причина, по которой я бы назвал переход на C # для всей команды, заключается в том, что именно на этом языке написано большинство примеров, и большинство проектов с открытым исходным кодом публикуют исходный код на C #. Поэтому, если ваша команда не может использовать такой ресурс, вы можете излишне ограничивать себя.


0

C # и VB.NET основаны на платформе .NET; разработчикам, работающим в .NET, важно знать .NET, принципы, методы, шаблоны ... В этом случае переключение между языками не будет проблемой - речь идет главным образом о синтаксисе. Возможно, в смешанной команде все они должны попытаться выучить оба языка (это не имеет большого значения), но это может быть важно для будущего сотрудничества между членами команды.


0

Я бы сказал, что одним из преимуществ использования всех языков на одном языке является то, что любой разработчик может работать с любой частью кода.

Кроме того, VB.NET и C # отличаются только синтаксисом в .NET. И код, написанный на обоих языках, может прекрасно сосуществовать в одном проекте.


0

Я бы пошел с C #, потому что:

  • это больше похоже на Java и C ++ (языки очень часто преподаются на курсах CS).
  • Есть много ресурсов в Интернете на C #, чем на VB (из того, что я видел там).
  • шансы найти / нанять других разработчиков, которые знают C # лучше, чем VB (из того, что я видел в моей компании) для поддержки проекта.

0

Мое мнение таково: это позволяет разрабатывать на основе контракта интерфейс, и разработчик должен иметь возможность кодировать класс на любом языке, который он пожелает, и, вероятно, разделять классы низкого / высокого уровня в разных сборках. Пока классы уважают запрошенный интерфейс и реализуют требование, проблем не должно быть.


0

Я согласен со многими другими ответами здесь. Я был частью двух команд, которые должны были принять это решение. В обоих они изначально решили, что разработчики могут выбирать, так как два языка работают вместе. Однако в течение первого года они оба хотели, чтобы они просто выбрали C # и поставили новое требование, чтобы все новые проекты были на C #.


0

Причины использовать C #:

  • До сих пор это сделало двух ваших разработчиков счастливыми, и они могут поглотить двух других, как только они это изучат.
  • Вы планируете нанять больше разработчиков в какой-то момент и хотите избежать толпы "20 лет опыта VB".
  • Вы любите фигурные скобки.
  • Ты любишь жизнь.

Причины использовать VB.NET:

  • Два разработчика, которые не знают C #, абсолютно отказываются изучать его.
  • Девиз вашей компании - «бродить по пути наименьшего сопротивления».
  • Существует огромная база кодов VB, которая не может быть обновлена.
  • Вы получаете удар HP Lovecraft и сетуете на отсутствие "ужасов в своей повседневной жизни".
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.