Ir al contenido principal

Leer antes de escribir

Es común que una persona que toma un proyecto iniciado por alguien más, critique la manera en como esta hecho. Pasa en muchas profesiones y/u oficios. Trato de no hacerlo (tanto); pero...algunas veces es sorprendente como la persona que escribió el código se complicó la existencia reinventando la rueda. Es decir, creando su propia solución para un problema común. Es aún más sorprendente cuando quien lo hace tiene varios años trabajando en proyectos. Trataré de explicar como evitar ser esa persona que complica el código. Antes, daré un ejemplo de situaciones de este tipo.


Al leer código de alguien más.
En las aplicaciones realizadas en .NET la configuración de la aplicación se guarda en un archivo llamado igual que el ejecutable añadiéndole la extensión ".config". Así si mi ejecutable se llama miAplicación.exe tendré un archivo llamado miAplicación.exe.config  en el mismo directorio. En caso de ser una aplicación web, el archivo se llama web.config. El formato del archivo de configuración es estándar y existen librerías que facilitan la lectura de los valores de configuración.

He estado en proyectos donde la persona que lo inició creó su propio formato de configuración y su propia convención para nombrar los archivos. La aplicación funciona; pero esto hace que se requiera más tiempo para entender lo que hace el código fuente del programa, se tiene más código que mantener a cambio de prácticamente ningún beneficio. La decisión parece estar basada en que no se conocía la manera (.NET ) de hacer las cosas. También lo he visto al usar librerías de acceso a datos, donde el programador original creo una forma de ejecutar los scripts, en lugar de seguir la convención o utilizar las clases que da el marco de trabajo.

¿Por qué alguien que tiene varios años programando no usa lo común? ¿Por qué no sigue la convención? Puede ser por la misma razón por la que algunas personas tienen faltas de ortografía. Por ejemplo yo. Hace tiempo al momento de escribir lo hacía con muchas faltas de ortografía, con el tiempo he aprendido a escribir mejor. Ahora es fácil notar (sin ayuda de un corrector ortográfico) cuando una palabra esta mal escrita. Esto no pasó solo por escribir varios años.

Empecé a notar que las palabras se veían raras, si estaban mal escritas, porque me acostumbré a verlas escritas correctamente al leer texto de otras personas, en libros, blogs, etcétera. El leer me ha ayudado a escribir mejor, a notar cuando algo no anda bien en lo que escribo. Aun sigo equivocándome; pero sé que entre más lea y escriba, reduciré mis faltas de ortografía.

Leyendo código. Foto de Gabriel Flores.

De igual forma leer código de otras personas ayuda a escribir mejor código. Siguiendo con el ejemplo anterior, si el programador hubiera leído el código de varias aplicaciones .NET se hubiera percatado de que la forma en que estaba guardando la configuración no era lo común. Hubiera sentido que su código se veía raro. O tal vez ni si quiera hubiera pensando en reinventar como realizar la configuración de la aplicación y hubiera usado directamente la convención del marco de trabajo.

Para escribir buen código además de tener práctica escribiéndolo, también hay que leer código de otras personas. El no hacerlo puede provocar que hagas algo distinto a la convención o "reinventes la rueda", que puede ser divertido (y servir para aprender) la primera vez; pero a la larga es algo a lo que pocos querrían darle mantenimiento. Si quieres escribir mejor código, práctica y lee código de otros.

Comentarios

Entradas más populares de este blog

Bloqueos

Una de las preguntas típicas de las juntas matutinas en los equipos de desarrollo de software es ¿Hay algún bloqueo? Si lo hay, se trata de ver qué es lo que está esperando esa persona y encontrar la forma de que se desbloquee; pero ¿Qué son los bloqueos? Los bloqueos son obstáculos que te impiden realizar o avanzar en tu trabajo. Evitan que puedas seguir progresando en el proyecto.

He notado que es común en las personas con menos experiencia decir que tienen un bloqueo cuando están batallando, debido a su poca experiencia, en la forma de resolver un problema. Han intentado varias formas y se empiezan a quedar sin ideas de como puede ser resuelto el problema o como pueden cumplir con el requerimiento especificado. Al quedarse sin opciones de qué intentar dicen que tienen un bloqueo con la tarea y que a menos que alguien les diga como resolverlo, no se puede avanzar en la tarea.

En personas con más experiencia, ese tipo de bloqueos no ocurren, una persona con experiencia ha visto pro…

Firebird 2.1 UPDATE OR INSERT

Another great feature that I like in Firebird 2.1 is the UPDATE OR INSERT statement. It's a really time saver and it makes the SQL cleaner.

For example suppose I have a products table like the one I use in my last post and an inventory table to store the product stock. Before Firebird 2.1 if I want to set the stock for a product I needed to check if a record for that product_id already exists; if the product_id already exists then I write an update. If not then I write an insert statement. So I ended up with something like this:


IF EXISTS(SELECT * FROM inventory WHERE product_id = :product_id ) THEN
UPDATE
inventory
SET
stock = :stock
WHERE
product_id = :product_id;
ELSE
INSERT INTO inventory
(product_id, stock)
VALUES
(:product_id, :stock);

In this example I only update one field but when I have to update a big table I ended up with a big chunk of code and thinking: "there should be another (better) way to do this".

Fortunately now with Firebird 2.1 there…

Database Mail en MS SQL Server 2005

Configuración de Database Mail en MS SQL Server 2005

Primero se debe de habilitar, ya que por omisión el componente esta deshabilitado, Utilizando el SSMS (SQL Server Management Studio)


Si no esta habilitado aparecerá un mensaje preguntado si lo habilita, después aparece esta ventana donde se pregunta al usuario que es lo desea hacer.


Seleccionamos la primera opción para crear un perfil.


Configuramos el perfil y le agregamos por lo menos una cuenta.


Seleccionamos el perfil como public y default.


Para mandar correo se utiliza el procedimiento msdb.sp_send_dbmail por lo tanto el usuario que intente mandar correo debe de tener permiso para la base de datos msdb.

Referencias:
http://www.sqlservercentral.com/columnists/cBunch/introtodatabasemailinsql2005.asp