Hallo allerseits
Ich habe einen Auftrag im Zusammenhang mit CSV-Dateien. Dazu muss ich diese zuerst in Zeilen aufspalten und dann die einzelnen Zeilen in Datensätze. Technisch gesehen ist das kein Problem, nur wird der Code schlecht lesbar, wenn ich die Daten aus dem Array (ich spalte jede Zeile anhand des Kommas auf und speichere es in ein Array - String.split(",")) herauslese und in meine POJOs speichere:
Nun könnte man das natürlich mit Konstanten versuchen, das sieht dann etwa so aus:
Der Nachteil daran ist, dass ich danach eine Klasse voller Konstanten habe. Ich möchte das eigentlich lieber trennen. Daher habe ich es mal mit einer Enum versucht:
Der Zugriff sieht dann so aus:
Das ganze trägt offenbar wenig zur Klarheit des Codes bei. Ausserdem deutet die Verwendung von ordinal() darauf hin, dass ein Enum vielleicht doch nicht die richtige Lösung ist.
Hat jemand eine Idee, wie man das Array irgendwie "beschreiben" könnte? Der Code sollte ohne weitere Dokumentation lesbar sein. Und in die JavaDoc schreiben möchte ich das ganze auch nicht (bei Änderungen muss ich sonst an zwei Stellen Aktualisierungen vornehmen).
Ich habe einen Auftrag im Zusammenhang mit CSV-Dateien. Dazu muss ich diese zuerst in Zeilen aufspalten und dann die einzelnen Zeilen in Datensätze. Technisch gesehen ist das kein Problem, nur wird der Code schlecht lesbar, wenn ich die Daten aus dem Array (ich spalte jede Zeile anhand des Kommas auf und speichere es in ein Array - String.split(",")) herauslese und in meine POJOs speichere:
Java:
Dog d = new Dog();
d.setName(data[143]);
d.setNameOfOwner(data[198]);
Nun könnte man das natürlich mit Konstanten versuchen, das sieht dann etwa so aus:
Java:
private static final int NAME_OF_DOG = 143;
private static final int NAME_OF_OWNER = 198;
// ...
d.setName(data[NAME_OF_DOG]);
d.setNameOfOwner(data[NAME_OF_OWNER]);
Der Nachteil daran ist, dass ich danach eine Klasse voller Konstanten habe. Ich möchte das eigentlich lieber trennen. Daher habe ich es mal mit einer Enum versucht:
Java:
public enum CsvDescription {NAME_OF_DOG(143), NAME_OF_OWNER(198); /* ... */}
Der Zugriff sieht dann so aus:
Java:
d.setName(data[CsvDescription.NAME_OF_DOG.ordinal()]);
Das ganze trägt offenbar wenig zur Klarheit des Codes bei. Ausserdem deutet die Verwendung von ordinal() darauf hin, dass ein Enum vielleicht doch nicht die richtige Lösung ist.
Hat jemand eine Idee, wie man das Array irgendwie "beschreiben" könnte? Der Code sollte ohne weitere Dokumentation lesbar sein. Und in die JavaDoc schreiben möchte ich das ganze auch nicht (bei Änderungen muss ich sonst an zwei Stellen Aktualisierungen vornehmen).