Disclaimer: This is a personal web page. Contents written here do not represent the position of my employer.

Thursday, July 12, 2007

 

Quejándote mejoras el mundo

Creo que todos estamos de acuerdo en que sentados en nuestro sofá no vamos a mejorar nada en absoluto las cosas que nos preocupan.

Por eso voy a dedicar esta mini-entrada a este tipo de gente que lo da todo por quejarse y quejarse y no parar de quejarse:



Estos han sido los mejores ejemplos que he encontrado.


Actualización 17-FEB-2008: Después de leer esto sobre la ley d'Hondt ("Lo que vale tu voto"), me gustaría quejarme también tal como hace el autor del artículo.

Actualización 02-MAR-2008: Sustituida la actualización del 20-FEB-2008 de esta entrada por una nueva entrada: La falacia del voto útil.

Labels: , ,


Monday, July 02, 2007

 

Preventing NHibernate prostitution with NUnit

He decidido que más pronto o más tarde migraré el blog al idioma inglés. Pero poco a poco, jejeje, así que de momento sólo los títulos de las entradas.

Hoy vamos a hablar de un test unitario que me he montado, que sirve para que los poco experimentados programadores no utilicen NHibernate mal. ¿Y cómo podrían usarlo mal? Pues saltándose a la torera las facilidades que presta NHibernate con respecto a la conversión del modelo relacional en modelo de objetos, lo que a la larga conlleva código inmantenible y estéticamente una mezcla de código que genera un grado espaghetti 8 sobre 10.

¿Y cómo pueden saltárselo a la torera? Metiendo propiedades ID en el código (reflejando las foreign keys) cuando deberían ser referencias a otros objetos de NHibernate. Es decir:


[Serializable]
public class IrmAgent : IrmObject
{
private int iId;
private int? iIdGroup;
private string sContactPerson;


///
/// Default constructor.
///

public IrmAgent()
{
this.Id = 0;
}

public override int Id
{
get { return this.iId; }
set { this.iId = value; }
}

public virtual int? IdGroup
{
get { return this.iIdGroup; }
set { this.iIdGroup = value; }
}

public virtual string ContactPerson
{
get { return this.sContactPerson; }
set { this.sContactPerson = value; }
}

}


En lugar de usar la propiedad para el grupo como un objeto:


[Serializable]
public class IrmAgent : IrmObject
{
private int iId;
private IrmGroup oGroup;
private string sContactPerson;


///
/// Default constructor.
///

public IrmAgent()
{
this.Id = 0;
}

public override int Id
{
get { return this.iId; }
set { this.iId = value; }
}

public virtual IrmGroup Group
{
get { return this.oGroup; }
set { this.oGroup = value; }
}

public virtual string ContactPerson
{
get { return this.sContactPerson; }
set { this.sContactPerson = value; }
}
}


Y pensaréis, ¿cómo puedo detectar la cagada del primer código? Pues si pudiera diseñar un algoritmo para ello seguramente habría inventado ya la IA, así que lo único que puedo hacer es un algoritmo que "huela" algo sospechoso.

Y esta vez voy a usar MonoPasteBin porque sino el coloreado de código en el blog es muy feo :)

Labels: , , ,


This page is powered by Blogger. Isn't yours?

Categories

RSS of the category Gnome
RSS of the category Mono
RSS of the category C#
RSS of the category Programming
RSS of the category Mozilla
RSS of the category Web Development
RSS of the category Security
RSS of the category Open Source
RSS of the category Engineering
RSS of the category Misc
RSS of the category Politics

Contact with me:
aaragonesNOSPAMes@gnNOSPAMome.org

Archive
My Photo
Name:
Location: Hong Kong, Hong Kong
Follow me on Twitter