Чи повинен 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 # devs майже універсально. Я також подумав, що деякі сторонні інструменти не підтримують 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поодинці відправили б мене бігти до С #. ModuleКонцепція також дуже небезпечно. Він схожий на a static classв C #, але ... все в ньому доступне в усьому світі без посилання на батьківський клас та автоматично статичне без будь-яких інших вказівок ... за винятком того, що батьківський клас є модулем ...!
Пол Сасік

6
Вибачте за nitpick, але це просто не так. Наприклад, як би ви написали фільтр виключень у C #? blogs.msdn.com/b/clrteam/archive/2009/08/25/…

@LukeH Щоб додати фільтр виключень до C #, ми можемо побудувати функцію в VB або IL, а потім викликати її в C #: D

4
@Anna: Таким чином, спростуючи ваше твердження про те, що "все, що ти можеш зробити у VB.NET, ти можеш зробити і в C #" .

2
У VB.Net є дуже багато речей, які ви просто не можете зробити - див. Також: stackoverflow.com/q/2362381/50447
Rowland Shaw

5

Чесно кажучи, команда розробників повинна використовувати ту саму мову або хоча б знати ті самі мови.

Це допоможе в перехресній підготовці та підтримці серед різних програм, які виробляє команда розробників.

Врешті-решт VB - C # - це битва уподобань, але команда повинна знаходитись на тій самій сторінці, до якої саме вони користуються чи підтримують.


5

Чи повинен AC # dev перейти на VB.net, коли база даних мовної команди є змішаною?

Розробник повинен використовувати мову .NET, яка є стандартною для команди. ІМО, повинна використовуватися одна мова (якщо не можна зробити надзвичайно вагомий випадок).

Чи є якісь причини, що я повинен вести людей далеко від VB.net?

Я думаю, що більшість людей тут віддають перевагу C #, але це не стільки технічне питання, скільки політичне чи ділове рішення. Вирішіть, якою мовою .NET користуватися, а потім використовуйте її. Очевидно, що існує низка факторів, які слід враховувати:

  • Чи існує існуюча база даних коду? На якій мові написана більшість з них?
  • Чи можуть розробники VB.NET легко забрати 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 і писали методи зі 100-ма рядками коду. Тому я схилявся, щоб ігнорувати будь-яке оголошення про роботу, яке просило VB.NET.
Ян

1

Я б схилявся до C #, тому що він менш довершений і, на мій досвід, набагато більше поширений в Інтернеті. Я також зауважу, що C # або VB.NET легко і швидко вивчаються, до того, що це мізерно і незначно. З іншого боку, .NET Framework - величезна і постійно розвивається істота. Освоєння .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.