4.19.2012

Visual Studio Tips: Break points condicionales

Cuando se trabaja desarrollando software con alguna empresa, es sencillo identificar quién tiene un amplio dominio de Visual Studio como Herramienta y quién no. Hago la diferenciación acerca de del uso de Visual Studio como Herramienta ya que no es lo mismo dominar .NET que dominar Visual Studio.

Uno de los puntos más importantes a la hora del desarrollo del software es la depuración, y por lo tanto poder “debuguear” de la mejor forma el código se convierte en una herramienta fundamental para producir software de calidad. La mayoría de los desarrolladores saben como “debuguear” el código pero: ¿Saben cómo sacarle el máximo provecho al “debuguer”?

Un casi típico es ver a un desarrollador “debugueando” el recorrido de una lista ítem por ítem cuando en realidad quiere ver solo los ítems que tengan alguna condición en común. En este caso Visual Studio nos permite ponerle condiciones a los “break points” para que estos solamente se detengan cuando esta condición se cumple. Para entender esta característica veamos un ejemplo.

Break points condicionales

Supongamos que tenemos una clase Cliente con las siguientes características:

public class Cliente
{
public Int64 Id { get; set; }
public string Nombre { get; set; }
public string Pais { get; set; }
public DateTime FechaNacimiento { get; set; }
public string Email { get; set; }
public string Telefono { get; set; }
}

Supongamos que un método va a una base de datos y obtiene una cantidad muy grande de clientes; para nuestro ejemplo vamos a retornar una lista con cuatro clientes.

static IEnumerable<Cliente> ObtenerClientes()
{
var _lista = new List<Cliente>
{
new Cliente
{
Id = 1, Nombre = "Ana Cruz",
Email = "ana@yahoo.com",
FechaNacimiento = DateTime.Now.AddYears(-25),
Pais = "Panamá"
},
new Cliente
{
Id = 2,
Nombre = "Yorleny Prendas",
Email = "Yorleny@ymsn.com",
FechaNacimiento = DateTime.Now.AddYears(-35),
Pais = "Costa Rica"
},
new Cliente
{
Id = 3,
Nombre = "Carlos Porras",
Email = "cporras@ymsn.com",
FechaNacimiento = DateTime.Now.AddYears(-45),
Pais = "Costa Rica"
},
new Cliente
{
Id = 4,
Nombre = "Israel Arias",
Email = "iarias@gmail.com",
FechaNacimiento = DateTime.Now.AddYears(-23),
Pais = "Perú"
}
};
return _lista;
}

Supongamos que al recorrer la lista notamos un comportamiento inusual pero solamente los clientes con el Pais = “Costa Rica” lo producen. Si la lista no devuelve los registros ordenados y la cantidad de estos es muy alta, esta tarea depuración puede ser muy tortuosa y lenta. Sin embargo, el “debuguer” de Visual Studio nos permite poner condiciones a los “break points”; para lograrlo simplemente ponemos el break point y damos botón derecho sobre el mismo y seleccionamos la opción “condition”


image


Seguidamente nos aparecerá el diálogo para agregar el filtro que queremos que detenga el proceso de depuración. En nuestro caso queremos que se detenga cada vez que el cliente tenga como país “Costa Rica”.


image


Ahora cuando “debugueamos” el código { con F5 } el “debuguer” solo parará si se cumple esta condición.


image


Etiquetas de Technorati: ,

1 comentario:

Anónimo dijo...

Curioso, no conocía esta opción.
Es muy útil, gracias.