Ac # dev dovrebbe passare a VB.net quando la base linguistica del team è mista?


14

Di recente mi sono unito a un nuovo team di sviluppo in cui le preferenze linguistiche sono miste sulla piattaforma .net.

  • Dev 1: Conosce VB.net, non conosce c #

  • Dev 2: Conosce VB.net, non conosce c #

  • Dev 3: conosce c # e VB.net, preferisce c #

  • Dev 4: Sa c # e VB6 (VB.net dovrebbe essere abbastanza facile da prendere), preferisce c #

Mi sembra che i leader del pensiero nello spazio .net siano sviluppatori c # quasi universalmente. Ho anche pensato che alcuni strumenti di terze parti non supportassero VB.net ma quando ho iniziato a esaminarlo non ho trovato buoni esempi.

Preferirei avere l'intero team su c # ma se non ci sono buoni motivi per forzare il problema a parte le preferenze, non penso che sia la scelta giusta.

Ci sono dei motivi per cui dovrei allontanare la gente da VB.net?


5
La verbosità all'interno di VB dovrebbe portarti a C # ...
Aaron McIver l'

13
Mi sembra che il tuo team di sviluppo manchi di una leadership seria. Perché il tuo manager non ha affrontato questo problema?

2
Perché stai andando alla deriva verso VB .Net? Dal tuo diagramma sopra i 2 sviluppatori con qualsiasi abilità entrambi conoscono C # e gli altri non conoscono affatto .Net. Sicuramente sarebbe meglio portare quelli che non conoscono nessuno dei due linguaggi con C # dato che gli altri due sviluppatori hanno già competenze c # su cui basarsi?

15
Sotto il cofano possono essere uguali, ma la sintassi VB è la brutta sorella infestata da verruche in piedi accanto a sua sorella C # più calda e ben bagnata. La sua sintassi dovrebbe essere ricordata solo come un punto di riferimento al sangue che è stato versato dagli occhi di molti sviluppatori mentre fissano la propria versione dell'inferno. VB dovrebbe essere castrato, ucciso e lasciato a lato della strada per marcire nella calda calura estiva. Abbraccia la sintassi più bella e evita ciò che madre natura ha scelto di dimenticare. Scegliere saggiamente.
Moo-Juice,

2
Se non sbaglio, On Error Resume Next è per il supporto legacy. Prova I blocchi di cattura esistono in VB.Net ... poiché è .Net.
Tony Abrams,

Risposte:


2

Non c'è motivo davvero convincente per forzare qualcuno a cambiare lingua a meno che non si abbia una funzione che sarà particolarmente utile o che farà risparmiare tempo ai tuoi progetti. Compileranno entrambi fino a IL e si esibiranno in modo equivalente (supponendo che Option Strictsia attivo in VB.NET ... altrimenti potresti incorrere in penalità per l'associazione tardiva). Tutto il resto è davvero preferenziale (per non respingerlo affatto, ma non è una metrica oggettiva).

Suggerirei di guardare gli elenchi di lavoro nella tua zona e vedere quale lingua è più diffusa sia nell'offerta di lavoro (cioè il pool di lavoro per entrambe le lingue). Vedere quale ti fornirà un pool di lavoro più grande o migliore sarà probabilmente la tua metrica più convincente.


Sono d'accordo con quello che hai detto sulle inserzioni di lavoro locali. Penso che una cosa facile da trascurare sia il potenziale pool di talenti e l'effetto della scelta di una lingua rispetto all'altra potrebbe avere sui tuoi futuri sforzi di assunzione.
jjr2527,

7

Fortunatamente la risposta è semplice: non esiste una lingua "migliore". Tutti i linguaggi .NET utilizzano, alla radice, le funzionalità dell'insieme di classi fornite da .NET Framework. Pertanto, tutto ciò che puoi fare in VB.NET puoi farlo in C # e viceversa. Le uniche differenze tra le lingue sono solo sintattiche.

I programmatori C ++, Java e J ++ preferiranno la sintassi concisa e senza senso di C #. I programmatori di Visual Basic (VB) potrebbero preferire attenersi al diavolo che conoscono: l'approccio linguistico pseudo-naturale insensibile alle maiuscole / minuscole di Visual Basic .NET. Se hai programmatori VB e sono programmatori reali (vedi Opzione Strict ON) otterrai gli stessi risultati. VB è più prolisso .... C # è un lanciatore di sfere con distinzione tra maiuscole e minuscole.


È vero, entrambi possono fare il 98% che l'altro può, MA c'è così tanta corda da appendere in VB. On Error Resume Nextda solo mi manderebbe a correre verso C #. Anche il Moduleconcetto è molto pericoloso. È simile a un static classin C # ma ... tutto in esso è accessibile a livello globale senza riferimento alla classe genitore e automaticamente statico senza altre indicazioni ... tranne che la classe genitore è un modulo ...!
Paul Sasik,

6
Mi dispiace nitpick ma questo non è vero. Ad esempio, come si scrive un filtro delle eccezioni in C #? blogs.msdn.com/b/clrteam/archive/2009/08/25/…

@LukeH Per aggiungere un filtro di eccezione a C #, possiamo creare una funzione in VB o IL, quindi chiamarla in C #: D

4
@Anna: confutando così la tua affermazione che "tutto ciò che puoi fare in VB.NET puoi fare in C #" .

2
Ci sono alcune cose che semplicemente non puoi fare in VB.Net che puoi in c # - vedi anche: stackoverflow.com/q/2362381/50447
Rowland Shaw,

5

Onestamente un team di Dev dovrebbe usare la stessa lingua o almeno conoscere le stesse lingue.

Ciò contribuirà alla formazione incrociata e al supporto tra le varie applicazioni prodotte da un team di sviluppo.

Alla fine VB vs C # è tutta una battaglia di preferenze, ma il team dovrebbe trovarsi sulla stessa pagina in cui verrà utilizzato o supportato.


5

Ac # dev dovrebbe passare a VB.net quando la base linguistica del team è mista?

Lo sviluppatore dovrebbe usare il linguaggio .NET che è lo standard per il team. IMO, dovrebbe esserci una lingua utilizzata (a meno che non sia possibile formulare un caso estremamente convincente).

Ci sono dei motivi per cui dovrei allontanare la gente da VB.net?

Penso che la maggior parte delle persone qui preferisca il C # ma questa non è una questione tanto tecnica quanto una decisione politica o commerciale. Decidi quale linguaggio .NET usare e poi usalo. Ora ovviamente c'è una serie di fattori da considerare:

  • Esiste una base di codice esistente? In quale lingua è scritta la maggior parte?
  • Gli sviluppatori VB.NET possono facilmente raccogliere C #? Lo vogliono?
  • Ha un senso finanziario investire in ramp-up / formazione in C #?
  • In che modo qualsiasi cambio di lingua avrebbe un impatto sui prodotti esistenti?

+1 per pensare alla squadra, piuttosto che alle preferenze individuali
MarkJ,

4

In effetti, VB.NET ha alcune funzionalità che C # non ha attualmente: valori letterali XML e sintassi delle query per l'utilizzo del metodo Aggregate in LINQ.


1
VB.NET non ha neanche iteratori (ovvero parola chiave Yield in C #).
atconway


2

Nel 2003 mi trovavo in una situazione molto simile a quella in cui ti trovi adesso. Stavo gestendo un team che si stava trasferendo in ASP.NET da ASP Classic. La maggior parte del nostro team aveva esperienza con VBScript come linguaggio defacto per ASP, ma circa la metà del team preferiva C # nonostante un percorso di migrazione leggermente più complesso da ASP / VBScript. Alla fine ho scelto VB.NET, ma a posteriori vorrei davvero aver seguito la strada C #.

In occasione del 5 ° anniversario di tale decisione, ho scritto un articolo di blog sulla mia logica per prendere la decisione e ho cercato di fornire il vantaggio del mio senno di poi ad altri gestori dello sviluppo che cercavano di fare la stessa chiamata. Ecco un link all'articolo:

"Retrospettiva di un manager sulla decisione C # contro VB.NET"

Per farla breve, per coloro che non vogliono leggere l'intero articolo: non penso che il progetto sia stato peggio per aver scelto VB.NET su C #, e probabilmente ci ha fatto risparmiare un sacco di tempo nel breve periodo. Il problema più grande riguardava davvero il reclutamento. Assumerei felicemente un programmatore C # o VB.NET per lavorare in entrambe le lingue. Non sono poi così sostanzialmente diversi. Tuttavia, che sia meritato o meno, VB.NET ha uno stigma che fa sì che un buon numero di sviluppatori eviti i lavori dove sanno che lavoreranno con esso come lingua principale.


Come programmatore C # ho lavorato su progetti che utilizzano VB.NET. Ma il più delle volte i programmatori VB.NET non sapevano cosa stavano facendo, non avevano una laurea in scienze e scrivevano metodi con centinaia di righe di codice. Pertanto mi sono appoggiato a ignorare qualsiasi annuncio di lavoro che richiedesse VB.NET.
Ian

1

Mi spingerei verso C # perché è meno prolisso e nella mia esperienza è molto più diffuso su Internet. Direi anche che C # o VB.NET sono facili e veloci da imparare, al punto che è trascurabile e insignificante. Il framework .NET, d'altra parte, è enorme e una creatura in continua evoluzione. La padronanza di .NET richiede molti anni, ma la padronanza di C # o VB.NET potrebbe richiedere alcuni mesi o meno.


0

Penso che @Anna Karin abbia un buon punto, quindi non dovresti preoccuparti delle biblioteche. Almeno, non ricordo nessuno che funzioni solo con c # e non con vb.net.

Un altro punto importante è che renderà più difficili i controlli del codice tra i membri dello stesso team se lavorano con lingue diverse. Penso che sia una buona idea usare un linguaggio comune, per ridurre l'attrito nella comunicazione.


0

Mentre sono d'accordo con la risposta precedente che .NET dovrebbe essere la stessa saggia funzionalità, questo non è sempre il caso, ma abbastanza vicino che se hai un progetto semplice non dovrebbe importare.

Il motivo principale che darei per passare a C # all'interno del team è che è la lingua in cui si trovano la maggior parte degli esempi e la maggior parte dei progetti open source pubblica il codice sorgente in C #. Quindi, se la tua squadra non è in grado di attirare una tale risorsa, potresti limitarti inutilmente.


0

C # e VB.NET sono basati sulla piattaforma .NET; è importante per gli sviluppatori che lavorano in .NET conoscere .NET, i principi, le tecniche, i modelli ... In tal caso il passaggio da una lingua all'altra non sarà un problema, si tratta principalmente di sintassi. In un team misto forse tutti dovrebbero provare ad imparare entrambe le lingue (non è un grosso problema), ma può essere importante per la futura collaborazione tra i membri del team.


0

Direi che l'unico vantaggio di avere tutti usando la stessa lingua è che significherebbe che qualsiasi sviluppatore potrebbe lavorare su qualsiasi parte del codice.

Oltre a ciò, VB.NET e C # differiscono solo per la sintassi in .NET. E il codice scritto in entrambe le lingue può coesistere nello stesso progetto.


0

Vorrei andare con C # perché:

  • è più vicino a Java e C ++ (lingue insegnate molto spesso nei corsi CS).
  • ci sono molte risorse su Internet in C # che in VB (da quello che ho visto là fuori).
  • è più probabile trovare / assumere altri sviluppatori che conoscono C # meglio di VB (da quello che ho visto nella mia azienda) per mantenere il progetto.

0

La mia opinione sarebbe quella di consentire lo sviluppo basato su contratto con l'interfaccia e lo sviluppatore dovrebbe essere in grado di codificare una classe in qualunque lingua desideri e probabilmente separare le classi di basso / alto livello in diversi assiemi. Fino a quando le classi rispettano l'interfaccia richiesta e implementano il requisito, dovrebbero esserci pochi problemi.


0

Sono d'accordo con molte altre risposte qui. Ho fatto parte di due squadre che hanno dovuto prendere questa decisione. Inizialmente, in entrambi decisero che gli sviluppatori potevano scegliere poiché le due lingue lavoravano insieme. Tuttavia, nel primo anno in cui entrambi desideravano di aver appena scelto C # e di inserire un nuovo requisito affinché tutti i nuovi progetti fossero in C #.


0

Motivi per usare C #:

  • Finora ha reso felici due dei tuoi sviluppatori e potrebbe benissimo coinvolgere gli altri due dopo averlo appreso.
  • Hai intenzione di assumere più sviluppatori a un certo punto e vuoi evitare la folla "20 anni di esperienza VB".
  • Ti piacciono le parentesi graffe.
  • Tu ami la vita.

Motivi per utilizzare VB.NET:

  • I due sviluppatori che non conoscono C # si rifiutano assolutamente di impararlo.
  • "Mescolarsi lungo il percorso di minor resistenza" è il motto della tua azienda.
  • Esiste un enorme codebase VB esistente che non può essere aggiornato.
  • Sei su un calcio di HP Lovecraft e ti lamenti per la mancanza di "orrori eldritch" nella tua vita quotidiana.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.