Un de mes amis m'a dit que la meilleure pratique est que la main
méthode contenant la classe doit être nommée Main
et ne contient que la main
méthode. De plus, la main
méthode ne doit analyser que les entrées, créer d'autres objets et appeler d'autres méthodes. La Main
classe et la main
méthode ne devraient rien faire d'autre. Fondamentalement, ce qu'il dit que la main
méthode contenant la classe devrait être comme:
public class Main
{
public static void main(String[] args)
{
//parse inputs
//create other objects
//call methods
}
}
Est-ce la meilleure pratique?
object-oriented
programming-practices
utilisateur
la source
la source
Réponses:
Le point que fait valoir votre ami est qu'une application doit simplement être amorcée par la méthode principale, et rien de plus. En ayant la méthode principale dans sa propre classe, vous renforcez simplement ce fait en la gardant indépendante de toute logique d'application. Le rôle de la méthode principale serait d'analyser toutes les entrées et d'initialiser l'application avec ces entrées, et éventuellement d'autres.
L'idée est que vous n'avez pas besoin de la méthode principale pour initialiser
Foo
. Cela vous permet d'initialiser et de démarrer facilementFoo
dans un autre contexte, potentiellement avec une sémantique différente.la source
La méthode main () est un
vilainretour à la programmation procédurale, fournissant le point d'entrée dans l'application. Des tentatives sont faites dans différents langages de programmation pour l'encapsuler, mais sa nature même rend cela difficile (il doit être public et statique, mais il ne doit JAMAIS être appelé à partir de quoi que ce soit d'autre dans le programme, ce qui est très contradictoire). WPF a réussi (en vous cachant main () profondément dans les entrailles du projet d'application WPF et en fournissant des "crochets" configurables pour le traitement personnalisé), tout comme Java (d'une manière similaire pour les applications Android), mais WinForms et la plupart des autres types de les applications vous permettent toujours de gérer main ().Ainsi, la plupart des experts disent que le LOC de la fonction main () doit être aussi bas que possible. Il y a une approche (qui je pense est un peu exagérée) dans laquelle la fonction main () a une ligne:
C'est un peu trop, mais je suis d'accord avec le principe de base; main () devrait aussi peu que possible pour mettre votre application orientée objet et événementielle dans un état "prêt".
la source
main
partir d'autres contextes, par exemple la récursivité.Dans les langues qui prennent en charge les fonctions,
main
c'est juste une fonction régulière et il n'y a donc rien d'autre que vous puissiez faire avec ce que vous avez dit. Et puis il y adeslangagesidiotsqui abandonnent les fonctions en faveur de tout être un objet, ce qui signifie que chaque fois que vous voulez une fonction, vous devez l'envelopper dans une classe inutile .Eh bien, assez décousu. Le point que j'essaye de faire est que ce
Main
n'est pas vraiment une classe, mais une fonction et donc vous ne devriez rien faire d'autre que d'analyser les entrées, créer d'autres objets et appeler d'autres méthodes parce que c'est tout ce qu'une fonction peut faire.la source