Un amigo mío me dijo que, la mejor práctica es que el main
método que contiene la clase debe nombrarse Main
y solo contiene el main
método. Además, el main
método solo debe analizar entradas, crear otros objetos y llamar a otros métodos. La Main
clase y el main
método no deberían hacer nada más. Básicamente, lo que está diciendo es que el main
método que contiene la clase debería ser:
public class Main
{
public static void main(String[] args)
{
//parse inputs
//create other objects
//call methods
}
}
¿Es la mejor práctica?
Respuestas:
El punto que su amigo está haciendo es que una aplicación simplemente debe ser arrancada por el método principal, y nada más. Al tener el método principal en su propia clase, simplemente está reforzando ese hecho al mantenerlo independiente de cualquier lógica de aplicación. La función del método principal sería analizar cualquier entrada e inicializar la aplicación con esas y posiblemente otras entradas.
La idea es que no necesita el método principal para inicializar
Foo
. Esto le permite inicializar fácilmente y comenzarFoo
en otro contexto, potencialmente con una semántica diferente.fuente
El método main () es un retroceso
feoa la programación de procedimientos, que proporciona el punto de entrada a la aplicación. Se hacen intentos en varios lenguajes de programación para encapsularlo, pero su propia naturaleza lo hace difícil (tiene que ser público y estático, pero NUNCA debe llamarse desde otra parte del programa, lo cual es muy contradictorio). WPF tuvo éxito (al ocultar main () de usted profundamente en las entrañas del proyecto de la aplicación WPF y proporcionar "ganchos" configurables para el procesamiento personalizado), al igual que Java (de manera similar para las aplicaciones de Android), pero WinForms y la mayoría de los otros tipos de las aplicaciones aún te hacen lidiar con main ().Entonces, la mayoría de los expertos dicen que el LOC de la función main () debería ser lo más bajo posible. Hay un enfoque (que creo que es un poco exagerado) en el que la función main () tiene una línea:
Esto es un poco demasiado, pero estoy de acuerdo con el principio básico; main () debe hacer lo menos posible para que su aplicación orientada a objetos y orientada a eventos esté en un estado "listo".
fuente
main
desde otros contextos, por ejemplo, recursividad.En los idiomas que admiten funciones
main
es solo una función regular y, por lo tanto, no hay nada más que pueda hacer con ella que no sea lo que dijo. Y luego hay lenguajesidiotasque abandonan las funciones a favor de que todo sea un objeto, lo que significa que cada vez que quieres una función tienes que envolverla en una clase innecesaria .Bueno, basta de divagaciones. El punto que estoy tratando de hacer es que
Main
no es realmente una clase, sino una función, por lo que no debería haber hecho nada más que analizar entradas, crear otros objetos y llamar a otros métodos porque eso es todo lo que una función puede hacer.fuente