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

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: , , ,


Comments:
De vez en cuando entro en la pagina y creo que si bien seria un detalle traducirla al ingles, escribir las entradas unicamente en ingles seria un error.
Hay 10000000 de paginas anglosajonas sobre estos temas y creo q si tenemos un idioma que hablan 380 millones de personas y ademas eres español, no hay motivo para escribir unicamente en ingles. Hay que reivindicar nuestro idioma y darle la importancia que tiene. Pq la pagina este en español no va a ser menos chachi q si estuviera en aleman, fraces o ingles.
 
Muy buen articulo!. Estaria genial ampliar esa clase un poco mas para detectar mas errores.
Lo del blog en ingles me parece genial. Adoro nuestro idioma pero desgraciadamente muchos de esos millones de hispano parlantes son muy pobres y no tienen internet asi que si quieres que te lea mas gente usa el ingles :-(
 
Post a Comment

Links to this post:

Create a Link



<< Home

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: London, United Kingdom
Follow me on Twitter