Domanda su un semplice problema di progettazione

3

Al lavoro mi sono imbattuto in un metodo. Ha creato una query e ha restituito una stringa in base al risultato della query, ad esempio de ID di un cliente. Se la query non ha restituito un singolo cliente, restituisce un valore null. Altrimenti, restituirebbe una stringa con l'ID di loro. Sembrava questo:

String error = getOwners();
if (error != null) {
    throw new Exception("Can't delete, the flat is owned by: " + error);
}
...

Ignorando il fatto che getCustomers () restituisce un valore null quando invece dovrebbe restituire una stringa vuota, qui stanno accadendo due cose. Controlla se l'appartamento è di proprietà di qualcuno e quindi restituisce.
Penso che una logica più leggibile sarebbe quella di fare questo:

if (isOwned) {
    throw new Exception("Can't delete, the flat is owned by: " + getOwners());
}
...

Il problema è che il primo modo fa con una query quello che faccio con due query al database.
Quale sarebbe una buona soluzione per un buon design ed efficienza?

    
posta Uri 01.06.2012 - 15:39
fonte

1 risposta

7

Puoi cambiare il metodo getOwners ? In tal caso, cambierei getOwners per restituire un ArrayList . In questo modo puoi semplicemente controllare se l'elenco è vuoto e se non solo utilizzare l'elenco. Mi piace così.

public ArrayList<int> getOwners() {
    ArrayList<int> list = ArrayList<int>();
    // Magic...
    return list;
}

// Later...

ArrayList<int> owners = getOwners();
if (!owners.isEmpty()) {
    throw new Exception("Can't delete, the flat is owned by: " + owners.toString());
}

Penso che l'approccio di cui sopra sia molto più chiaro di qualsiasi altro modo.

    
risposta data 01.06.2012 - 15:49
fonte

Leggi altre domande sui tag