Busqueda local

Loading

lunes, 28 de febrero de 2011

Modificadores de Clase

Cuando se trabaja revisando el código de otras personas, para verificar funcionalidades, por lo general nos preocupamos por validar que el código realice las tareas que se determinaron en los requerimientos.
Es muy fácil perder de vista aspectos importantes al codificar, como son los estándares y las buenas prácticas. La calidad de software al nivel del código, radica en que nuestro código este escrito aprovechando las ventajas que nos ofrece el lenguaje que empleemos.

Anti-Patterns

Para poder entender el concepto, primero debemos entender lo que es un patrón, en una definición muy simple, un patrón es una forma reutilizable para resolver, problemas recurrentes en el desarrollo de software. Como si fuera una plantilla que podemos aplicar a otro problema para solucionar su implementación.
Un Anti-patrón es un patrón, que es usado comúnmente, pero que resulta ser ineficiente, no es efectivo y puede hasta resultar contraproducente en la práctica. Esto quiere decir que no basta con que mucha gente lo utilice, eso no lo hace un patrón.

viernes, 25 de febrero de 2011

Cuando usar Throw new Exception

A diferencia de lo que muchos piensan, la recomendación de los expertos con relación al manejo de las excepciones, es que deben atenderse al más bajo nivel, o sea, donde se genera la excepción, ya que es ahí, donde tiene sentido la información y es ahí donde se puede manejar adecuadamente. La lógica más simple seria: Analiza si puedes evitar que la excepción deba subir, si no se puede súbela.

jueves, 24 de febrero de 2011

Dilema EF o SP

EF (Entity Framework) o SP (Store Procedures).
En este punto es necesario hacer algunos comentarios en relación con la pregunta más compleja que me han hecho sobre el uso del EF.
Programar usando EF, Es mejor que usar Store Procedures con DataSets?

EF Query

Lo primero y lo más importante que debemos saber cuando hacemos consultas sobre el EF, es que estas consultas no se realizan sobre la Base de Datos, las consultas que realizamos se ejecutan contra el Modelo de datos.
Otro dato que debemos saber es que para poder usar un motor de base de datos, debemos usar un proveedor, este proveedor es el encargado de convertir nuestras consultas en algo que pueda entender el motor de la base de datos y es el mismo el que se encarga de convertir la respuesta en los objetos que nuestra aplicación puede manejar.

EF Connection String

Cuando se crea el EDM, se crea al mismo tiempo un archivo por medio de la herramienta llamada: EntityModelCodeGenerator, mismo que es agregado a nuestro proyecto. El nombre de este archivo emplea un estándar muy simple, se trata de la combinación del nombre que le hayas agregado a tu EDM, al cual se le añade la palabra designer.
Debido a que este código es generado, no es recomendable hacer modificaciones a este archivo, ya que si necesitamos volver a generar el EDM, por algún cambio en la Base de datos, entonces estos cambios se perderían.

miércoles, 23 de febrero de 2011

Iterator Pattern II

Este post es la continuación de uno previo, puedes leerlo aquí.
Continuación...

Iterator Pattern I

Cuando programaba con VB 6 codificaba pseudo clases, ya que no era posible crear clases como tales, por lo que era necesario recurrir a algunas técnicas, para poder simularlo. Creábamos pseudo clases, que ahora puedo descubrir que eran cohesivas. Por ejemplo: un ticket para cobrar en algún punto de venta.
Tenía una pseudo clase Ticket, que internamente tenía una colección de Conceptos. A través del la clase Ticket exponíamos métodos para agregar conceptos a esta colección o eliminarlos, o recorrerlos para realizar cálculos, etc.

martes, 22 de febrero de 2011

Custom Validation Rules

En MVC es posible agregar reglas de validación usando atributos a través de DataAnnotation, la cual nos ofrece mecanismos para personalizarlas o extenderlas. En un post previo
ya he explicado como implementar las reglas de validación usando DataAnnotation, en esta ocasión les explicare como crear uno personalizado.

Manejo de Errores

Cuantos de ustedes tiemblan al escuchar al usuario decir: “hay un error…”, la verdad es que es casi imposible escribir un código completamente libre de errores. Después de todo, nuestra aplicación es concebida y se ejecuta de forma segura en nuestro equipo. El entorno en el cual se desarrolla, no es el mismo que el de la maquina final.

lunes, 21 de febrero de 2011

Enums

Tal vez ni siquiera hayas escuchado hablar de los Enums, o simplemente los has evitado, porque a los programadores nos preocupa poner valores en constantes, ya que un enum es una lista de constantes.
Por lo general se emplean cuando el dato en cuestión, podría estar almacenado en una tabla de la base de datos, pero le sirve al programador para tomar decisiones durante el flujo de la aplicación; ya que por su naturaleza, sería necesario que nosotros supiéramos de su tipo, etc.

domingo, 20 de febrero de 2011

User Experience

Desde la primera vez que libere una aplicación, en su versión de prueba, descubrí un área que por lo general se encuentra fuera del campo de visión de los programadores: LA EXPERIENCIA DE LOS HUMANOS CON LA APLICACIÓN.

sábado, 19 de febrero de 2011

Factory Pattern

Desde que incursione por primera vez al paradigma orientado a objetos, me llamo poderosamente la atención la conceptualización de los objetos reales, en definiciones denominadas Clases, que por medio del mecanismo de la instanciación se convierten en objetos.
Este mecanismo no se ve afectado por las diferentes clases, siempre se lleva a cabo por medio de un constructor. Los constructores pueden recibir atributos, para inicializar las propiedades de la nueva instancia, así como recientemente las modificaciones al Framework nos permiten inicializar dichas propiedades al momento de crear la instancia sin que sean enviados argumentos al constructor.

Work Flow

Cuando empezamos a realizar alguna actividad se nos imparte un curso de inducción, un curso donde se nos explican los aspectos operativos de la actividad que vamos a realizar, se nos explican los pasos, la secuencia de las tareas, la información que necesitamos y la que debemos generar, etc.

viernes, 18 de febrero de 2011

n-Capas

Cuando empecé a trabajar con MVC y supe que el nombre eran las iniciales para Model, View y Controller, creí que MVC tendría 3 capas. Y eso se debió a que mi experiencia previa desde mucho tiempo atrás, se basaba en modelos con n-Capas.

Buenas prácticas

No es posible hablar de Patrones de diseño sin que hablemos de las buenas prácticas. Las buenas prácticas no son patrones de diseño, en realidad cuando las conocemos nos damos cuenta que son la base de los patrones. También son dictadas desde la misma experiencia y conocimiento que se ha acumulado durante años. Seguirlas nos ayudan de la misma forma que usar estándares a la hora escribir código; si quieren llámenlas consejos, desde el punto de vista de la arquitectura de software son principios de diseño.

Patrones de diseño de software.

He hablado mucho sobre el tema, en los últimos post, incluso los he ejemplificado, y al igual que con otros temas dentro de este Blog, cometí el error de creer que todo el mundo debe haber escuchado de ellos, o al menos saber lo que son y lo que no son.
Así que ahora voy a tratar de exponer lo que para mí son los patrones de diseño de software.

LINQ

En post previos he hablado del LINQ, aun que fue muy superficial, porque cuando lo escribí, di por sentado que quien leyera el post, debía conocer LINQ. Sin embargo, algunos amigos que han leído mi Blog, me han comentado que no siempre es así.
Así que vamos por partes.

jueves, 17 de febrero de 2011

Dependency Injection

Este es uno de los patrones de diseño de software de mayor popularidad al momento.
Por qué?
Favorece la implementación de clases que no son cohesivas, privilegia el código reusable, y libera a nuestro software del paradigma de las dependencias que muchas veces le impiden evolucionar. Por medio de este, podemos crear piezas de código para usar en nuestro software, y cuya arquitectura une los componentes, en vez de que los componentes se liguen a sí mismos.

martes, 15 de febrero de 2011

View Engine

Cuando decidí empezar a desarrollar en MVC 1 de Microsoft, una de las razones, era la promesa de poder controler la generación del código HTML, conocidas como Views en el argot de MVC.
Encontré algunos ejemplos muy interesantes donde el programador sustituyo por completo llamado FlickrExplorer (http://flickrxplorer.codeplex.com/) una excelente pieza de código, aun que fue creada en MVC 1.0 puede ser abierta en VS 2010 sin ningún problema.

Extensibility en MVC

Cuando hablamos de MVC podemos decir sin temor a equivocarnos, que fue pensado para que el programador pudiera tomar el control, para que pudiéramos ampliar su funcionalidad y lograr nuestros objetivos. Para poder hacerlo, es necesario conocer los puntos donde se puede ampliar o personalizar, además es necesario conocer a fondo dicho punto para hacer las cosas adecuadamente…nadie dijo que fuera fácil!

MVC 3 (preview)

Hace unos días recibí con mucha curiosidad la nueva versión de MVC, la 3. Dicho sea de paso, he tenido la oportunidad de trabajar con el MVC de Microsoft, desde la versión 1; así como trabaje con ASP desde sus inicios.
Entre la versión 1 y 2 hubo avances significativos, en pro de simplificar el código que era necesario escribir en la versión 1. En la versión 2, resulto más estructurado y simple llevar a cabo alguna tarea, sin que sea necesario dar muchas vueltas. Los patrones y los principios de Diseño, se pueden detectar en todo lo que hacemos.

lunes, 14 de febrero de 2011

Métodos de Extensión

Estos métodos nos permiten agregar nuestros propios métodos a tipos ya existentes, sin tener que derivar o recompilar, o tener que modificar el código original.
Son un tipo especial de método que es llamado como si fuera parte de la clase instanciada del tipo para el cual fue creado el método de extensión. Los métodos extendidos más famosos los podemos encontrar en LINQ, y le añaden funcionalidad extra a IEnumerable y a IEnumerable<T>.
Estos métodos los podemos ver cuando estemos codificando en el Intellisense después del punto.

Generics

Es una de las más poderosas características que introdujo el .Net Framework 2.0. Representa la solución a uno de los problemas más recurrentes en la programación. Poder definir estructuras de datos con tipos de datos seguros, que no tiene que ser asignados al momento de codificar.
El principal beneficio es la posibilidad de reutilizar el código, incluso con diferentes tipos de datos, todo tipo que soporte el compilador puede usar el código, incluso tipos de datos que no existan en este momento.

Entendiendo las Lambdas

NO es posible entender las expresiones lambdas sin conocer los métodos anónimos. Un método anónimo, según la explicación más simple que pude encontrar es: un evento directamente asociado a un bloque de código. Así que son métodos que se definen en la misma línea.
Una expresión Lambda tiene la habilidad de manejar eventos en la misma línea de codigo, asignando un bloque de código directamente a un evento usando métodos anónimos. Las lambdas son una forma muy concisa de crear métodos anónimos.

domingo, 13 de febrero de 2011

Flujo de trabajo al codificar

Cuando tenemos mucho tiempo haciendo algo, es inevitable que hayamos creado una forma de hacerlo, por lo general nuestra propia forma de hacerlo. Si tuviste la oportunidad que te guiara alguien con experiencia, tú flujo de trabajo estará basado en la experiencia de alguien que ya haya caminado esa ruta y sepa por donde ir con más seguridad. Si no fue así y tuviste que conocer el camino por tu cuenta, es muy probable que te hayas caído en el camino, que hayas caminado en círculos, que te hayas extraviado, etc.

viernes, 11 de febrero de 2011

Buddy Class

Cuando nos encontramos con alguna innovación en la tecnología, siempre debemos analizar de qué forma afectara nuestra forma de hacer las cosas. Por ejemplo hace algunos pocos años, los celulares y las redes sociales no formaban parte de nuestras vidas. Hoy en día un adolecente, se preguntara como podíamos vivir sin estos.
Aun recuerdo cuando un generador de código era una herramienta mística, que cualquiera deseaba como parte de sus herramientas de trabajo. Hoy en día, el Visual Studio nos ofrece este tipo de herramientas, que sonde gran utilidad.

Patrón de Repositorio y Patrón de Unidad de trabajo.

Cuando se habla de escribir código, siempre se dice que hay muchas formas de hacerlo, y desde el más simplista punto de vista, eso es cierto. Sin embargo cuando se habla de escribir código de calidad, entonces las múltiples formas de hacerlo se reducen.
Con el paso de los años dentro de este medio, he visto muchas formas de hacer lo mismo, y siempre he tratado de usar la más recomendada o probada. Hace algún tiempo, escuche por primera vez la palabra PATRON al referirse a una forma probada de hacer las cosas.

Entity Framework 4.0

Para aquellos que son nuevos en el uso del EF, puedo decirles que en esta versión podrán encontrar funcionalidades que aparecen por primera vez y que vienen a solucionar algunas deficiencias de versiones anteriores.
Vamos a comentar algunas, sin que se entienda que son las más importantes:

jueves, 10 de febrero de 2011

Entidades

En lo personal soy programador desde antes que existieran las bases de datos como hoy las conocemos o las clases. Trabaje con mecanismos para almacenar y recuperar la información, desde archivos secuenciales, tablas y desde luego bases de datos.

miércoles, 2 de febrero de 2011

Entendiendo los Helpers

Un helper es simplemente un método que regresa una cadena de texto. La cula puede representar cualquier tipo de contenido que deseemos. ASP.NET MVC ya incluye un conjunto de Helpers muy útiles, como por ejemplo:
  • Html.ActionLink()
  • Html.BeginForm()
  • Html.CheckBox()
  • Html.DropDownList()
  • Html.EndForm()
  • Html.Hidden()
  • Html.ListBox()
  • Html.Password()
  • Html.RadioButton()
  • Html.TextArea()
  • Html.TextBox()