Um amigo meu me disse que, a melhor prática é que o main
método que contém classe deve ser nomeado Main
e contém apenas main
método. O main
método também deve apenas analisar entradas, criar outros objetos e chamar outros métodos. A Main
classe e o main
método não devem fazer mais nada. Basicamente, o que ele está dizendo que o main
método que contém a classe deve ser:
public class Main
{
public static void main(String[] args)
{
//parse inputs
//create other objects
//call methods
}
}
É a melhor prática?
object-oriented
programming-practices
do utilizador
fonte
fonte
Respostas:
O argumento de seu amigo é que um aplicativo deve ser apenas inicializado pelo método principal e nada mais. Por ter o método principal em sua própria classe, você simplesmente reforça esse fato, mantendo-o independente de qualquer lógica de aplicativo. O papel do método principal seria analisar quaisquer entradas e inicializar o aplicativo com essas e possivelmente outras entradas.
A idéia é que você não precisa do método principal para inicializar
Foo
. Isso permite que você inicialize e inicie facilmenteFoo
em outro contexto, potencialmente com diferentes semânticas.fonte
O método main () é um retrocesso
feiopara a programação procedural, fornecendo o ponto de entrada no aplicativo. São feitas tentativas em várias linguagens de programação para encapsulá-lo, mas sua própria natureza torna isso difícil (deve ser público e estático, mas NUNCA deve ser chamado de qualquer outra coisa no programa, o que é altamente contraditório). O WPF obteve êxito (ocultando main () de você nas entranhas do projeto de aplicativo WPF e fornecendo "ganchos" configuráveis para processamento personalizado), assim como o Java (da mesma forma para aplicativos Android), mas o WinForms e a maioria dos outros tipos de os aplicativos ainda fazem você lidar com main ().Portanto, a maioria dos especialistas diz que o LOC da função main () deve ser o mais baixo possível. Existe uma abordagem (que eu acho que é um pouco exagerada) na qual a função main () tem uma linha:
Isso é um pouco demais, mas eu concordo com o princípio básico; main () deve o mínimo possível para colocar seu aplicativo orientado a objetos e orientado a eventos em um estado "pronto".
fonte
main
de outros contextos - por exemplo, recursão.Em idiomas que suportam funções,
main
é apenas uma função regular e, portanto, não há mais nada que você possa fazer além do que disse. E também existem linguagensidiotasque descartam funções em favor de que tudo seja um objeto, o que significa que toda vez que você deseja uma função, precisa envolvê-la em uma classe desnecessária .Bem, chega de divagações. O ponto que estou tentando destacar é que
Main
não é realmente uma classe, mas uma função e, portanto, você não deve fazer nada além de analisar entradas, criar outros objetos e chamar outros métodos, porque é tudo o que uma função pode fazer.fonte