miércoles, 30 de septiembre de 2009

Nuevas caracteristicas en VB y C# en VS 2010

La elección de un lenguaje de programación es una elección personal que cada programador tiene que hacer. Es similar a elegir el sabor de un helado: hay muy buenas elecciones para escoger pero su sabor favorito es una cuestión de preferencias personales.

En Visual Studio 2010 se han realizado varias mejoras a los dos lenguajes más populares, Visual Basic y C#, para dar a los programadores todas las herramientas necesarias para construir gran software independientemente del lenguaje que elijan.

Visual Basic
El equipo de Visual Basic se ha centrado en agregar características de productividad en el lenguaje para que los programadores puedan hacer más con menos líneas de código. La petición más común de nuestros clientes de Visual Basic ha sido la de quitar el carácter de subrayado ("_") que divide una instrucción de código en varias líneas. Visual Basic 10 presenta la continuación de línea implícita, que elimina la necesidad del carácter de subrayado en la mayoría de los casos.

Function Filtrar(
ByVal clientes As List(Of Cliente),
ByVal nroOrdenes As Integer
)

Dim consulta =
From c In clientes
Where c.Ordenes.Count >
nroOrdenes
Select c

Otra característica nueva de productividad es las propiedades implementadas automáticamente. Con las propiedades implementadas automáticamente, se pueden reemplazar las líneas repetitivas del código de implementación de la propiedad, con declaraciones de una sola línea. Hasta ahora, las declaraciones de propiedad a menudo tenían este aspecto:

Private _DescProducto As String = "Helado x 1Lt Sauco"

Property DescProducto() As String
Get
Return _DescProducto
End Get
Set(ByVal value As String)
_DescProducto = value
End Set
End Property

Private _ListaProducto As New List(Of Producto)

Property ListaProducto () As List(Of Producto)
Get
Return _ListaProducto
End Get
Set(ByVal value As String)
_ListaProducto = value
End Set
End Property

Ahora las declaraciones de propiedad se pueden declarar de una manera mucho más sencilla:

Property DescProducto As String = "Helado x 1Lt Sauco"
Property ListaProducto As New List(Of Producto)

Los inicializadores de colección y literales de matriz son también más simples. Ahora se pueden inicializar colecciones cuando se están declarando y el tipo de literales de matriz lo infiere el compilador.

Dim clientes= New List(Of String) From
{
"Jose Diaz",
"Rosario Salas",
"Ricardo Alcazar"
}
Dim ingredientes = {"azucar", "harina"} 'El tipo String() es inferido por el compilador

Visual Basic 10.0 ahora tiene mejor soporte para funciones lambdas. Las funciones lambdas ahora pueden contener expresiones que no devuelvan un valor, como la palabra clave Sub indica a continuación:

Array.ForEach(clientes, Sub(n) Console.WriteLine(n))

A veces, le gustaría poder hacer algo más complejo dentro de una declaración lambda. Visual Basic 10.0 admite lambdas multilínea. El compilador infiere el parámetro y devuelve los tipos donde sea posible al igual que en lambdas regulares.

Dim prodEspecifico = Function(n As String)
If n.StartsWith("s") Then
Return "extra " & n
Else
Return n
End If
End Function

La interoperación con código de lenguaje dinámico como Python y Ruby se ha vuelto más sencilla en Visual Basic 10.0. Por ejemplo, el fragmento de código siguiente llama a un método definido en una biblioteca de Python "math.py":

Dim matLib As Object = python.UseFile("math.py")
Dim montoUno = 44.2
Dim montoDos = 9.5
matLib.PowerOf(montoUno, montoDos )

C#
Las principales mejoras de C# 4.0 son la interoperabilidad con paradigmas de programación dinámica y la mejora de la programación en Office. La búsqueda dinámica, una nueva característica de C# 4.0, le permite utilizar y manipular un objeto desde IronPython, IronRuby, JScript, HTML DOM o una biblioteca estándar de .NET de la misma manera, independientemente de donde proceda. Otras mejoras del lenguaje como nombre y parámetros opcionales y compatibilidad mejorada para los clientes COM proporcionan a los programadores de C# que trabajan con la API de Office, la misma gran experiencia que han disfrutado los desarrolladores de Visual Basic.

Agregar la nueva palabra clave dinámica a su código le permite que su tipo se resuelva dinámicamente en tiempo de ejecución, en lugar de forma estática en tiempo de compilación. Esto le permite que los lenguajes dinámicos expongan sus objetos a C# de manera natural para un programador de C#:

dynamic objDinamico = GetDynamicObjectFromRuby();
objDinamico.Foo(7);
objDinamico.Property = "valor propiedad";
objDinamico[0] = "valor indice;

Los parámetros del método opcional son familiares para los programadores de Visual Basic y C++ y ahora están disponibles para los programadores de C#. Los parámetros opcionales se declaran con un valor predeterminado en la firma de método, tal y como sigue:

private void NuevoProducto(string descripcion, int stock = 0, float precio = 1.0F)

El método anterior puede llamarse de cualquiera de las maneras siguientes:

NuevoProducto("Harina");
NuevoProducto("Aceite", 12);
NuevoProducto("Azucar", 50, 64.5F);

Puede omitir el valor del parámetro stock pero especificar el parámetro precio , se puede utilizar la nueva característica de argumentos con nombre (resaltado de color verde). Todas las condiciones siguientes son también llamadas válidas:

NuevoProducto("Harina", stock: 20);
NuevoProducto(descripcion: "Aceite", stock: 30, precio: 5.5F);
NuevoProducto("Azucar", stock: 40);

Los argumentos con nombre también son una excelente forma de escribir llamadas autoexplicativas a los métodos existentes, incluso si no se utilizan parámetros opcionales.


Para conocer más acerca de las mejoras de los lenguajes de Visual Studio 2010 y poder descargar ejemplos, tenemos el sitio del futuro de VB (en inglés) y el sitio del futuro de C# (en inglés). Para jugar con las nuevas características, descargue (en inglés) e instale Visual Studio Beta 1 y únase a la conversación (en inglés).

Hasta la proxima.

2 comentarios:

Yelinna dijo...

A mi parecer, en VB no debieron eliminar el guión largo para indicar que una instrucción continúa en las líneas siguientes, esto hace al código más difícil de leer, pues en VB el caracter de salto de línea indica el final de una instrucción.

Walter Rojas Aguilar dijo...

Lo que pasa es que se pueden hacer consultas LinQ largas y en esos casos nos hace un poco mas rapida la programacion no tener que colocar el caractar underline(_), como se hace cuando utilizas LinQ con C#