visual studio espaƱol c# asp.net vb6 vb6-migration

studio - Convencer a los desarrolladores de aplicaciones heredadas de VB6 para que cambien a C#



visual studio android c# (11)

razones por las cuales los desarrolladores de VB6 deberían cambiar a C #

Otros han dado razones técnicas para C # sobre VB.NET, pero creo que se trata de un problema de personas , por lo que ofreceré lo que creo que es la razón más convincente por la que los desarrolladores deberían preferirlo:

  • A los desarrolladores de C # se les paga más que a los desarrolladores de VB.NET, por hacer exactamente lo mismo , simplemente escribir diferentes códigos fuente después de hacer ese pensamiento

también

  • ReSharper para C # es mejor que ReSharper para VB.NET

Sé que esta pregunta podría ser similar a otras pero realmente estoy buscando razones por las cuales los desarrolladores de VB6 deberían cambiar a C #.

Recientemente, mi empresa aprobó el proyecto para que se escriba en C #, así que tenemos muchos programadores de VB.Net, sin embargo, también tenemos algunos desarrolladores de aplicaciones heredadas que están en VB6. Tenemos un marco de tiempo para volver a escribir esas aplicaciones en aplicaciones web .Net. Así que no importa lo que tendrán que aprender cosas nuevas.

Uno de los desarrolladores de hoy específicamente preguntó "¿por qué deberíamos cambiar a C #?"

Respondí que la comunidad en su mayoría ha decidido que C # es el camino a seguir con aproximadamente el 80% de los ejemplos en C #. Soy un programador de VB.Net y estoy emocionado de finalmente cortar mis dientes con C #, sin embargo, dado que soy tan nuevo, no estoy seguro de poder responder al "¿por qué?" pregunta. Mis razones son más porque quiero aprenderlo.

Entonces, sin descender a una VB versos C #, realmente tengo curiosidad por saber si hay recursos que pueda enviar a estos desarrolladores para calmar sus nervios.

¡Mirando hacia adelante a su entrada!


Aparte de la ventaja técnica / social, está más orientada a los negocios, el soporte de Mainstream para VB6 ya terminó y el soporte extendido, que seguramente será caro, finalizaría pronto. Mudarse a una nueva plataforma en este caso tiene más sentido comercial. Además, IDE ya no cuenta con el respaldo de Microsoft, por lo que en caso de problema, usted sería SOL e instalarlo en una computadora portátil brillante podría brindarle una experiencia desagradable.

Tenga en cuenta que no necesitan portar todas las aplicaciones, solo desaprobar la parte que necesita ser reemplazada por ensamblajes .Net expuestos.

Por otro lado, tener experiencia en portar software desde una plataforma obsoleta a una nueva hará que estos muchachos sean ricos, siempre que estén dispuestos a aprender la nueva plataforma.


Creo que las otras respuestas han hecho un buen trabajo cubriendo los puntos técnicos. También les diría a los desarrolladores de vb6 que no solo hay más libros dirigidos a c # y más preguntas sobre SO en c #, sino que quizás sea más importante para ellos, más listados de trabajo también.

Una búsqueda rápida en las carreras de SO:

  • 92 ofertas de trabajo para c #
  • 11 ofertas de trabajo para vb.net
  • 1 oferta de trabajo para vb6

He hecho MUCHA VB6 en el pasado, y mucha C / C ++, y cuando ocurrió nuestra gran migración de .NET, no tenía dudas de que C # era el camino a seguir. Habiendo dicho eso, lo que los chicos de VB6 realmente deberían aprender es .NET, y el CLR (un tiempo de ejecución orientado a objetos adecuado en lugar de un front-end tonto de COM), y no una sintaxis. Concéntrese en eso y evite la guerra religiosa.


La sintaxis de los eventos de VB.net parece mucho mejor que C #; aunque la falta de medios para que una clase anule la suscripción de todos los manejadores de WithEvents a los que se suscribió, o elimine todas las suscripciones que otros objetos tienen a sus eventos, hace que sea un poco difícil evitar filtraciones de eventos, no es peor que C # en ese aspecto .

Además, en vb.net, es posible que un manejador de Finally sepa qué excepción ocurrió (si la hubo) en su bloque Try sin tener que atraparla realmente. Si se produce alguna excepción en el bloque Finally, la excepción original puede incluirse en CleanupFailedException (junto con la otra excepción que se produjo en el bloque Finally). Eso parece una buena ventaja.


"Los desarrolladores pueden ser engañados con un falso sentido de familiaridad con VB.NET, tratando los recursos como lo hicieron en VB6 sin entender los conceptos completos". (@Markle)

No he usado esto para una discusión antes, pero es un muy buen punto. Cuando recogí una aplicación VB.NET escrita por un grupo de programadores VB de new-to-.net, estaba plagada de llamadas de compatibilidad heredadas al viejo espacio de nombres VisualBasic. CStr (), VbNewLine, Mid (), etc ... Trabajar en un idioma que no está diseñado para admitir la conversión de código heredado impide el uso de esas reliquias. (Lo mismo ocurre con la eliminación de la referencia al espacio de nombre heredado, FYI).

Cambio bastante frecuentemente entre VB.NET y C #. Cada vez que voy de VB a C #, pienso "Esto es diferente, me tomará unos minutos ajustarme". Cada vez que paso de C # a VB, pienso: "Este es un lenguaje de programación ineficiente, hay mucha escritura necesaria, qué molesto".


VB6 no está completamente orientado a objetos y carece de un conjunto decente de colecciones / estructuras. VB.Net y C # están totalmente orientados a objetos e incluyen un conjunto decente de clases de colección como parte de .NET. .NET 2 también agregó genéricos para una mayor flexibilidad.

Estoy de acuerdo con aquellos que piensan que VB.Net es un poco superfluo: arregló los problemas con VB6 y terminó siendo un poco "yo también" junto con C #. Una vez dicho esto, hago una gran cantidad de interoperabilidad COM y encuentro que el anticuado sistema ON ERROR de VB.Net es una forma conveniente de manejar los tiempos de espera y los reintentos de función. Puedes hacerlo con try ... catch it es más complejo.


En lo que respecta a la migración a .NET, ¡será mejor tarde que nunca! En lo que respecta a mi consejo, su kilometraje puede variar, vale cada centavo que está pagando por él.

Personalmente, creo que estás haciendo la elección correcta. El primer instinto para los desarrolladores de VB es cambiar a VB.NET. Eso suena completamente razonable, pero en mi opinión, es la elección incorrecta. Realmente tiene que desglosar las razones del cambio en dos categorías: ¿Por qué cambiar a .NET y por qué cambiar a C #?

Por qué cambiar a .NET sobre VB6:

  • El subprocesamiento múltiple en VB6 es técnicamente posible desde una perspectiva de programación, pero casi imposible si desea usar el IDE.

  • No creo que pueda crear una aplicación nativa de 64 bits en VB6. Eso descarta mucho.

  • No se están realizando nuevas mejoras en VB6.

  • De acuerdo, hay tantas razones por las que se me ocurre que probablemente me detenga allí.

Por qué cambiar a C # en lugar de a VB.NET

  • Los desarrolladores pueden adormecerse con un falso sentido de familiaridad con VB.NET, tratando los recursos como lo hicieron en VB6 sin entender los conceptos completos. Un ejemplo: a menudo ves nuevos convertidos a VB.NET configurando objetos en Nothing, creyendo que es una forma mágica de liberar recursos. No lo es.

  • Es cierto que la mayoría de los ejemplos ahora están en C #. Más importante aún, el libro de Jeff Richter ahora solo está en C #. Si quieres entender cómo .NET realmente funciona, IMO es un libro bastante obligatorio.

  • En .NET, encontrará que usará expresiones lambda todo el tiempo, especialmente cuando opera con Linq. La verbosidad de IMO VB realmente se convierte en una barrera para la comprensión y la legibilidad aquí, en formas en las que simplemente no era antes: foo.Select(x => x > 50) es, por cualquier estándar, mucho más fluido y legible que foo.Select(Function(x) x > 50) . Se pone peor a medida que las expresiones se vuelven más complejas.

  • Algunas de las peores prácticas con VB6 son imposibles o al menos mucho menos accesibles en C # (como ReDim Preserve y On Error Resume Next).

  • VB tiene cierta sintaxis que hace que sea bastante complicado y confuso de usar al crear bibliotecas CLR de propósito general. Por ejemplo, en C #, usa indexadores con corchetes []. En VB, usas parens. Eso hace que sea bastante difícil para el usuario de una subrutina decir si es un indexador o una función. Si alguien intentara usar su biblioteca fuera de VB, la diferencia sería importante, pero un desarrollador de VB podría inclinarse a crear subrutinas que deberían ser indexadores como funciones, ya que se ven similares.

  • No tengo ningún dato al respecto, pero si intenta contratar un buen conjunto de programadores, los mejores generalmente estarán menos dispuestos a trabajar en una tienda que escriba VB.NET sobre C #. Por lo general, temen que el código que generarán sus colegas probablemente sea un código .NET de calidad inferior, y seamos francos: existe un estigma contra los desarrolladores de VB.NET y la calidad de su código en la comunidad. Ahí. Lo dije. Deje que las llamas comienzen...

Como nota al pie, desde mi punto de vista, VB.NET fue una verdadera oportunidad perdida para MS. Lo que debería haber sido una forma de convertir sin problemas su antiguo código VB6 al mundo .NET - con invocación dinámica e interoperabilidad COM de alta calidad desde el principio. Lo que terminó siendo un conjunto de características casi clonadas de C # con una sintaxis más detallada y poca o ninguna compatibilidad con versiones anteriores. Triste, realmente. Bloqueó muchas organizaciones de .NET durante mucho tiempo. Por otra parte, tal vez forzó una ruptura limpia con el "pavo frío" del pasado ...


Es posible que esto no responda a su pregunta, de hecho puede incluso contradecir su respuesta y demostrar que su amigo está en lo cierto, pero aquí hay una buena lista de las similitudes (y diferencias) entre VB.NET y C #:

C # / VB.NET comparación

A medida que avanzas en esta lista, notarás cuán similares se han vuelto los dos idiomas y con cada nueva versión, puede haber cada vez menos razones para cambiar. Pero, al final, si haces el cambio, el artículo de Wikipedia resume bastante bien las ventajas que C # tiene sobre VB.NET bastante bien:

Artículo de Wikipedia que enumera las ventajas de C # sobre VB y viceversa


Preguntas sobre SO:

[C#]: 116,337 [VB.NET]: 11,740 [VB6]: 1,897

Eso no prueba nada. VB6 existía mucho antes que SO. Todos los buenos programadores de VB aprendieron lo que necesitan saber y MSFT había eliminado VB6. La mayoría de los nuevos principiantes de MSFT acudieron en masa a C # debido a su odio irracional hacia cualquier cosa BASIC (que aún exista, solo mire a Xojo) y, por supuesto, hacia marketing de MSFT. ¿Pero cómo se sienten ahora con C # recibiendo un cambio corto en comparación con C ++ en la plataforma de Windows 8? (Por ejemplo, XNA se ha ido). El mercado prácticamente exige C # sobre VB.net.


La mayor ventaja que tiene C # sobre VB6 es heredar.

(OK, para ser justos, es mi favorito, así que estoy totalmente predispuesto).

Otras ventajas:

  • Accesores formales
  • Tipos de excepción (no creo que VB6 tenga tipos de excepción, pero por favor corrígeme si estoy equivocado)
  • Genéricos
  • Expresiones Lambda

Y los siguientes están más relacionados con la plataforma .NET que los lenguajes mismos:

  • Biblioteca muy rica
  • Refactorización de Visual Studio y otros extras

Finalmente, el argumento de la popularidad siempre es asqueroso (popular <> bueno), pero da una idea del tamaño de la comunidad de cada uno y, por lo tanto, qué ayuda está disponible y hacia dónde va la industria en general.

Preguntas sobre SO:

  • [C #] : 116,337
  • [VB.NET] : 11.740
  • [VB6] : 1,897