entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

3votos

Buena practica a la hora de crear métodos y clases

Hola.

Estoy desarrollando una app para Android. En el MainActivity he creado unos métodos los cuales controlan si el dispositivo dispone de Google Maps y de los Google Play Services.

Se me ha ocurrido que tal vez, también desea llamar usar esos métodos en otra Activity, o por que no en otra app con lo cual he pensado que lo ideal sería crear un nuevo paquete (llamado check) y dentro de el una nueva clase que contenga estos métodos.

Me gustaría saber cual sería la buena practica en este caso o cual es el "estandar" a la hora de programar.

Gracias y un saludo!

2 Respuestas

3votos

kaiba78987 Puntos2300

Como se dijo, lo mejor es que cada clase tenga una responsabilidad. Si quieres hacer varios chequeos no relacionados entre sí, lo mejor sería dividir esos chequeos en varias clases dentro de un paquete check, por ejemplo.

Para nombrar el paquete, normalmente se usan prefijos que den alguna indicación, ya que de otro modo podría haber colisiones con librerías externas. Por ejemplo, podrías llamar al paquete org.yo.myapp.check, sustituyendo "yo" por tu nombre y "myapp" por el nombre de la app.

Por último, comentar que lo ideal sería que se trataran de métodos de chequeo estático (static) o usases el patrón singleton para que sólo haya una instancia de estos objetos en la aplicación.

0voto

egoitz_gonzalez comentado

Gracias.

Al final decidí usar el patrón Singleton. Aquí pongo parte del código.

public class AppRequirementsCheckSingleton {
    final int RQS_GooglePlayServices = 1;

    /**Objeto Singleton*/
    private static AppRequirementsCheckSingleton appRequirements = new AppRequirementsCheckSingleton();

    /**Constructor*/
    private AppRequirementsCheckSingleton(){
        super();
    }
    /**
     *@return the appRequirements
     */
    public static AppRequirementsCheckSingleton getAppRequirements(){
        /*if(appRequirements == null){
            AppRequirementsCheckSingleton appRequirements = new AppRequirementsCheckSingleton();
        }*/
        return appRequirements;
    }

/*/mas metodos ..
....
.....*/

}

3votos

Leonardo-Tadei Puntos227320

Hola Egoitz,

las buenas prácticas de la POO, independientemente de la plataforma destino, dicen que es correcto separar estas funcinalidades en un Objeto aparte.

El principio de Simgle Responsability dice que una clase debe tener una sola responsabilidad, como sería en este caso hacer chequeos, y por tanto no deberían los métodos estar en otra clase.

Otra buena práctica es que los nombres de las clases sean sustantivos, y que los nombres de los métodos sean verbos en infinitivo. En este caso la clase podría llamrse "checker", pero la verdad es que es un nombre muy poco descriptivo, ya que no se puede saber por su nombre qué es lo que chequea.

Hay más buenas prácticas (open/closed, Liskov, etc) , no son estándares pero entenderlas y usarlas evidencian la buena comprensión del paradigma de la POO.

Acá hay una breve descripción de cada uno: http://es.wikipedia.org/wiki/SOLID_%28object-oriented_design%29

Saludos!

0voto

egoitz_gonzalez comentado

Muchas gracias Leonardo. Ha sido de gran aporte la respuesta.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta