Aquí huele a cuco (IV)

Bueno, un poco de autocrítica nunca viene mal y en este caso yo soy uno de los culpables de este desaguisado….

public int getVendorsCount() {
	if (this.mDm.openDBConnection()) {
		this.mDbHelper = new VendorsDbAdapter();
		Cursor cursor = this.mDbHelper.getVendorsCount();
		if (cursor != null) {
			cursor.close();
			return cursor.getCount();
		}
		this.mDm.closeDBConnection();
	}
	return 0;
}

Fijaos bien: estamos intentando acceder a un cursor después de cerrarlo….. además solo cerramos la base de datos si el cursor es null… vamos, una joya de código. Gracias a que tenemos test funcionales en Android hemos encontrado semejante esperpento. Ya vamos recuperando poco a poco lo invertido en ellos :) .

Así he dejado el código después del pertinente refactor.

public int getVendorsCount() {
	int vendorsCount = 0;
	if (this.mDm.openDBConnection()) {
		this.mDbHelper = new VendorsDbAdapter();
		Cursor cursor = this.mDbHelper.getVendorsCount();
		if (cursor != null) {
			vendorsCount = cursor.getCount();
			cursor.close();
		}
		this.mDm.closeDBConnection();
	}
	return vendorsCount;
}

¿Bastante mejor no? ¿Alguna sugerencia para mejorarlo todavía más?

Be Sociable, Share!
Esta entrada fue publicada en android, aquí huele a cuco, humor, miscelánea, programación y etiquetada , , , , , . Guarda el enlace permanente.

2 respuestas a Aquí huele a cuco (IV)

  1. le Funes dijo:

    Se puede mejorar diferenciando (si por el contexto es importante saberlo) cuando el valor obtenido al llamar a la función es realmente cero o si la función nos devuelve cero por un problema. Simplemente se puede solucionar inicializando la variable con algun valor inválido, por ejemplo -1:

    int vendorsCount = -1;

  2. Julio García dijo:

    Toda la razón le Funes, muchas gracias. Ahora compruebo que se espera de la función y me aseguro de que no nos pasamos por alto el caso que comentas.

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>