Quote Originariamente inviata da Jamie04 Visualizza il messaggio
"Sporco e poco leggibile", perché? Se ti va di spiegarmelo.
- Il codice è tutto ammassato, non ci sono righe vuote che separano le varie operazioni. Ad esempio, hai codice di controllo e operazioni vere e proprie troppo amalgamate. Questo rende difficile capire a colpo d'occhio cosa stai facendo
- Usi variabili inutili, ad esempio per la query: passa direttamente al prepareStatement, no?

Sì, sono talebano su 'ste cose


Quote Originariamente inviata da Jamie04 Visualizza il messaggio
Perché non ti piace la gestione delle eccezioni?
Non c'è il finally: in caso di eccezione lo statement resta aperto, andando a occupare inutilmente risorse.

Il problema più grave IMHO è che in caso di eccezione stai facendo <i>troppo</i>: insertMenu dovrebbe fare una query, e basta. Te gli stai dando la responsabilità di avvisare l'utente che qualcosa è andato storto. Questa gestione andarebbe fatta a livello più alto: cosa succede se insertMenu facesse parte di una libreria che distribuisci ad altri sviluppatori? Potrebbe essere usata in un contesto in cui l'interfaccia grafica neanche esiste (pensa ad un batch notturno che legge dei dati da file e inserisce tutto a db, senza l'intervento dell'operatore). insertMenu() dovrebbe limitarsi a lanciare l'eccezione: sarà chi lo chiama a decidere cosa fare: avverto l'utente? Scrivo in un file di log? Mando una email al responsabile?

Spero di essere stato chiaro ^^


Io avrei fatto una cosa del genere, delegando la gestione a chi chiama il metodo:



codice:
    public static void insertMenu(String field) throws SQLException, IllegalArgumentException {
        PreparedStatement statement = null;

        try {
            if (field == null || field.isEmpty()) {
                throw new IllegalArgumentException("Please provide a not-null and not-empty value for 'field'");
            }

            statement = connection.prepareStatement("INSERT INTO Menu VALUES (NULL, ?)");
            statement.setString(1, field);
            statement.executeUpdate();
        } finally {
            if (statement != null) {
                statement.close();
            }
        }
    }


Quote Originariamente inviata da Jamie04 Visualizza il messaggio
sì in effetti è un falso problema, mi era solo saltato all'occhio, credevo che un id liberato venisse riassegnato.
Sarebbe un problema se venisse riassegnato visto che in genere un auto_increment è usato (purtroppo) come primary key...



Ah, anche il fatto che sia static non mi piace ma bisognerebbe vedere un attimo come hai organizzato l'architettura dell'applicazione.