In Java metodi principali spesso fare poco più che analizzare gli argomenti della riga di comando e inizializzare un oggetto che poi prende il sopravvento, per esempio:
public class FooServer {
// ...
public static void main(String[] args) {
// Process arguments ...
FooServer server = new FooServer(...);
// Initialize server ...
server.start();
}
}
Ho visto che alcuni software estrapolano questo metodo principale in una classe "principale" separata (spesso finendo in Launcher
o Main
):
public class FooServer {
// ...
}
public class FooServerLauncher {
public static void main(String[] args) {
// Process arguments ...
FooServer server = new FooServer(...);
// Initialize server ...
server.start();
}
}
La classe "main" è strettamente collegata all'altra classe, quindi suppongo che la classe "main" sia separata in modo da non inquinare l'interfaccia dell'altra classe.
Ho discusso la questione con un collega e la persona era dell'opinione che i programmatori contemporanei orientati agli oggetti riducessero le classi in troppe piccole classi separate per fingere che tutto sia intercambiabile mentre non lo è. La persona ha sostenuto che questo è un buon esempio del problema in quanto l'unico scopo del metodo principale è quello di avviare un oggetto dalla riga di comando e quindi è di fatto parte della sua interfaccia.
Esistono altri argomenti oggettivi contro la separazione del metodo principale nella sua classe?