Ein Freund von mir sagte mir, dass die beste Vorgehensweise darin besteht, dass Klassen enthaltende main
Methoden benannt werden sollten Main
und nur main
Methoden enthalten. Außerdem main
sollte die Methode nur Eingaben analysieren, andere Objekte erstellen und andere Methoden aufrufen. Die Main
Klasse und die main
Methode sollten nichts anderes tun. Grundsätzlich sollte das, was eine Klasse enthält main
, wie folgt aussehen:
public class Main
{
public static void main(String[] args)
{
//parse inputs
//create other objects
//call methods
}
}
Ist es die beste Praxis?
object-oriented
programming-practices
Benutzer
quelle
quelle
Antworten:
Der Punkt, den Ihr Freund macht, ist, dass eine Anwendung nur von der Hauptmethode gebootet werden sollte und nicht mehr. Indem Sie die Hauptmethode in einer eigenen Klasse haben, verstärken Sie diese Tatsache einfach, indem Sie sie unabhängig von jeglicher Anwendungslogik halten. Die Hauptmethode würde darin bestehen, alle Eingaben zu analysieren und die Anwendung mit diesen und möglicherweise anderen Eingaben zu initialisieren.
Die Idee ist, dass Sie die Hauptmethode nicht benötigen, um zu initialisieren
Foo
. Auf diese Weise können Sie problemlos initialisieren undFoo
in einem anderen Kontext beginnen, möglicherweise mit unterschiedlicher Semantik.quelle
Die main () -Methode ist ein
hässlicherRückfall in die prozedurale Programmierung und bietet den Einstiegspunkt in die Anwendung. In verschiedenen Programmiersprachen wird versucht, es zu kapseln, aber seine Natur macht es schwierig (es muss öffentlich und statisch sein, aber es sollte NIEMALS von irgendetwas anderem im Programm aufgerufen werden, was sehr widersprüchlich ist). WPF war erfolgreich (indem es main () tief in den Eingeweiden des WPF-Anwendungsprojekts versteckte und konfigurierbare "Hooks" für die benutzerdefinierte Verarbeitung bereitstellte), ebenso wie Java (ähnlich wie bei Android-Apps), aber WinForms und die meisten anderen Arten von Mit Apps beschäftigen Sie sich immer noch mit main ().Daher sagen die meisten Experten, dass der LOC der main () - Funktion so niedrig wie möglich sein sollte. Es gibt einen Ansatz (den ich für etwas übertrieben halte), bei dem die main () - Funktion eine Zeile hat:
Das ist ein bisschen viel, aber ich stimme dem Grundprinzip zu; main () sollte so wenig wie möglich sein, um Ihre objektorientierte, ereignisgesteuerte Anwendung in einen "Bereit" -Zustand zu versetzen.
quelle
main
aus anderen Kontexten aufzurufen, z. B. aus der Rekursion.In Sprachen, in denen Funktionen unterstützt werden,
main
handelt es sich nur um eine reguläre Funktion. Sie können also nichts anderes damit tun, als das, was Sie gesagt haben. Und dann gibt esidiotischeSprachen, die Funktionen zugunsten eines Objekts aufgeben , was bedeutet, dass Sie jedes Mal, wenn Sie eine Funktion wünschen, diese in eine unnötige Klasse einschließen müssen .Nun, genug Streifzüge. Der Punkt, den ich versuche, ist, dass
Main
es sich nicht wirklich um eine Klasse handelt, sondern um eine Funktion. Sie sollten also nichts anderes tun, als Eingaben zu analysieren, andere Objekte zu erstellen und andere Methoden aufzurufen, da dies alles ist, was eine Funktion tun kann.quelle