Metodo principale del metodo

2

Ora che sono entrato in un groove di dipendenza dalle dipendenze, trovo che i metodi principali per le diverse applicazioni sembrano fondamentalmente gli stessi. Questo è simile a cose che potresti trovare nella documentazione di Guice, ma metterò un esempio qui:

public class MyApp {
    public static void main(String... args) {
        Injector inj = Guice.createInjector(new SomeModule(),
                       new DatabaseModule()
                       new ThirdModule());
        DatabaseService ds = inj.getInstance(DatabaseService.class);
        ds.start();

        SomeService ss = inj.getInstance(SomeService.class);
        ss.start();

        // etc.
    }
}

Per più applicazioni ho metodi principali che sembrano tutti uguali. Ma ora, diciamo che voglio fare una nuova app, che, per esempio, riutilizza il mio DatabaseModule . Ho praticamente bisogno di copiare e incollare il metodo main e apportare le modifiche appropriate ... Vedo copia-incolla come un odore di codice. Inoltre, diciamo che mi rendo conto che probabilmente dovrei mettere shutdown hooks , ora devo passare e modificare ogni metodo principale in tutte le mie applicazioni per collegare i hook di shutdown a ciascun servizio.

C'è un buon modo per creare un template per questo processo e minimizzare il boilerplate?

    
posta durron597 10.09.2013 - 19:56
fonte

1 risposta

3

Nulla sull'esempio di codice nella tua domanda suggerisce la necessità di automazione. Ogni metodo Main sarà diverso.

Naturalmente, se tu avessi un database e stavi scrivendo il codice di accesso ai dati, potresti capire che molto di questo codice sembra quasi lo stesso (metodi "CRUD"), e potresti essere tentato di scrivere un codice generatore che legge gli schemi delle tabelle del database e genera classi che corrispondono alle entità in ciascuna tabella (ad esempio i clienti). Avresti quindi l'equivalente di un Object-Relational Mapper, probabilmente una degna ricerca.

Alcuni ambienti di programmazione come Visual Studio hanno la possibilità di memorizzare frammenti di codice e persino di avere un generatore di codice template (T4). Ma il punto di automazione è risparmiare tempo. Consulta prima questo grafico, prima di scrivere il modello:

link

    
risposta data 10.09.2013 - 22:01
fonte

Leggi altre domande sui tag