Esiste un modello per mappare un intervallo di numeri in una stringa?

-3

Ho bisogno di una funzione che prenderà il nome di una città e restituirà un intervallo specifico di numeri assegnato a quella città. Non userò un database. Il modo più semplice per farlo è

    //Pseudocode
    public arr getTownNumbers(string town) {

      switch (town)
        case: "Pasadena"
          arr["min"] = 183
          arr["max"] = 194
          return arr
        case: "Charlotte"
          arr["min"] = 268
          arr["max"] = 270
          return arr
    }

Questo sembra sporco. C'è un modello per archiviare questo tipo di dati?

    
posta pidacrep 10.12.2015 - 16:05
fonte

1 risposta

4

Ci sono molte cose che "odorano" di questo codice. Sembra solo imbarazzante e forzato. Avere una dichiarazione "switch" è una di quelle "qualcosa è probabilmente sbagliato qui intorno" cose a cui le persone puntano a meno che non sia chiaro che questa è la cosa giusta ... e lo switch String in Java solo mi sfrega ogni volta che vedo qualcuno provare a metterlo in uso.

Hai dati. Inserire i dati nel codice è una cosa "cattiva". I dati dovrebbero essere in qualche formato di dati. Che si tratti di un database o di un file di proprietà o di un altro sistema di archiviazione.

Consente di creare un file di proprietà per un esempio.

city.Pasadena.min=183
city.Pasadema.max=194
city.Charlotte.min=268
city.Charlotte.max=270

Quindi lo leggi con la classe Proprietà . Esistono altri approcci per la lettura da un database reale.

E lì, ora i tuoi dati sono separati dal codice.

Potresti quindi avere un piccolo oggetto che assomiglia a qualcosa:

class Range {
  private int min;
  private int max;

  public boolean in(int value) {
    return value <= max && value >= min;
  }
}

E potresti estendere questo con la creazione di iteratori o intervalli disgiunti o Set<Integer> butNotIn .

    
risposta data 10.12.2015 - 16:49
fonte

Leggi altre domande sui tag