java - tipos - que es un objeto en programacion
Métodos privados sobre métodos públicos (7)
La única razón por la que podría pensar por qué los métodos privados son útiles es porque le ayuda a escribir código duplicado.
Además de consolidar el código duplicado (a menudo expresado como "No se repita" o "SECO"), el uso de métodos privados también puede ayudarlo a estructurar y documentar su código. Si se encuentra escribiendo un método que hace varias cosas, puede considerar dividirlo en varios métodos privados. Si lo hace, puede aclarar cuáles son las entradas y salidas para cada pieza de lógica (con una granularidad más fina). Además, los nombres de métodos descriptivos pueden ayudar a complementar la documentación del código.
Estaba examinando la clase StringTokenizer.java
y hubo algunas preguntas que me vinieron a la mente.
Noté que los métodos públicos que deben ser utilizados por otras clases invocaron algún método privado que hizo todo el trabajo. Ahora, sé que uno de los principios de OOD es hacer todo lo posible y ocultar todos los detalles de la implementación. Aunque no estoy seguro de entender completamente la lógica detrás de esto.
Entiendo que es importante hacer que los campos sean privados para evitar que se almacenen valores no válidos en ellos (solo una de las muchas razones). Sin embargo, cuando se trata de métodos privados, no estoy seguro de por qué son tan importantes.
Por ejemplo, en el caso de la clase StringTokenizer
, ¿no podríamos haber puesto todo el código de implementación dentro de los métodos públicos? ¿Cómo habría hecho una diferencia en las clases que usan estos métodos, ya que la API para estos métodos (es decir, las reglas para llamar a estos métodos públicos) seguiría siendo la misma? La única razón por la que podría pensar por qué los métodos privados son útiles es porque le ayuda a escribir código duplicado. Por ejemplo, si todos los métodos públicos hicieron lo mismo, entonces puede declarar un método privado que realiza esta tarea y que puede ser utilizado por los métodos públicos.
Otra pregunta, ¿cuál es el beneficio de escribir la implementación en un método privado en lugar de un método público?
Aquí hay un pequeño ejemplo:
public class Sum{
private int sum(int a, int b){
return a+b;
}
public int getSum(int a, int b){
return sum(a,b);
}
}
Vs ...
public class Sum{
public int getSum(int a, int b){
return a+b;
}
}
¿Cómo es la primera muestra más beneficiosa?
Al escribir código limpio en Java o en cualquier otro lenguaje orientado a objetos, en general, el código más legible consiste en métodos concisos y breves. A menudo surge que la lógica dentro de un método podría expresarse mejor en llamadas a métodos separados para hacer que el código sea más limpio y más fácil de mantener.
Con esto en mente, podemos imaginar situaciones en las que tenga muchos métodos para realizar tareas hacia un solo objetivo. Piense en una clase que tiene un solo propósito complejo. El punto de entrada para ese único objetivo puede requerir solo un punto de partida (un método público) pero muchos otros métodos que forman parte de la operación compleja (muchos métodos de ayuda privados).
Con métodos privados podemos ocultar la lógica que no es y no debería ser accesible desde cualquier lugar fuera de la clase en sí.
El propósito de declarar un método privado es
- ocultar los detalles de la implementación
- excluir el método de ser listado como API pública
- asegúrese de que la lógica detrás del código no se use / use incorrectamente externamente
- la mayor parte del tiempo la ejecución de su método depende de otros métodos que se ejecutan antes de él; También puede estar seguro de que controla la secuencia correcta de uso de su método.
Use privado para sus métodos, a menos que tenga la intención de que su método se use de manera segura fuera del contexto de su clase.
Hacer que las funciones sean privadas te da ventaja en los siguientes casos:
- Hacer que la función sea privada le da al compilador JVM la opción de incorporar la función y, por lo tanto, aumentar el rendimiento de la aplicación
- Si la clase es heredable y la extiende desde una clase secundaria, en caso de que desee ocultar las funciones de la clase secundaria, puede hacerlo (puede extender StringTokenizer).
- Si un fragmento de código debe usarse en múltiples funciones, usted mueve ese código en un método de utilidad privada
Los métodos públicos generalmente son códigos que otras clases que implementan esa clase querrán usar. Los métodos privados generalmente no son tan útiles fuera de la clase, o no (por sí solos) cumplen el propósito de lo que la clase debe lograr.
Supongamos que está en el IDE de su elección e implementa un poco de clase A. La clase A solo está diseñada para hacer una cosa, por ejemplo, la generación de documentos. Naturalmente, tendrá algunos métodos matemáticos y de operación de bytes en la Clase A que se requieren para realizar la generación de documentos, pero las personas que intentan usar la Clase A no necesitarán estos otros métodos, ya que solo quieren un documento. Así que hacemos estos métodos privados para simplificar las cosas para futuros usuarios de nuestra clase.
Para agregar algo, un método privado SIEMPRE se puede cambiar de manera segura, porque usted sabe con seguridad que solo se llama desde la propia clase, ninguna clase externa puede llamar un método privado (ni siquiera pueden verlo).
Por lo tanto, tener un método privado siempre es bueno, ya que sabe que no hay ningún problema para cambiarlo, incluso si puede agregar más parámetros al método de forma segura.
Ahora piense en un método público, cualquiera podría llamar a ese método, así que si agrega / elimina un parámetro, deberá cambiar también TODAS las llamadas a ese método.
Una ventaja y también una buena razón para usar métodos privados dentro de las clases públicas es la seguridad y la prevención de errores. Los métodos declarados como privados solo son accesibles por la clase de la que forman parte. Esto significa que no se puede llamar accidentalmente a su método privado desde otro lugar dentro del programa, lo que reduce los errores y otras complicaciones. Si declara su método como público, se puede acceder a él por todo el problema y puede causar complicaciones.
Es posible que tenga varios métodos que funcionan con cierta información que no desea que interfiera en ninguna otra parte del programa. El uso de la encapsulación de datos a través de métodos y / o variables privadas ayuda a prevenir esto y también hace que su código sea más fácil de seguir y documentar.