Hallo!
Ich suche ein paar Vorschläge, wie man meinen Code etwas übersichtlicher / ordentlicher gestalten könnte.
Die Siuation ist folgende: Es geht darum, aus einer Liste mit Objekten jene heraus zu filtern, die bestimmte eigenschaften erfüllen. Die Objekte, die da in einer Liste stehen kommen aus einer externen API.
Nu haben diese Objekte spezifische EIgenschafte, die ich mittels Funktionen in Variablen einlese:
props ist eine HashMap mit komplexen nicht einfach mal eben abzufragenden Objekten als Schlüssel (sonst könnte man ja einfach damit arbeiten -.-), und Mengen von komplexen Objekten als Werte. Deswegen habe ich mir eine Methode geschrieben, die diese HashMap beackert und mir zu einem Key den ich als String spezifiziere den passenden Wert heraus sucht.
Soweit so gut, jetzt gibt es eine Reihe von solchen Eigenschaften, die in einer gewissen Abhängigkeit stehen:
Und je nach dem, welcher dieser Werte nicht null ist (Reihenfolge ist egal), soll daraus ein anderes Objekt erstellt werden. Und genau das finde ich nun wirklich nciht schön:
Nun die Frage an euch, ob jemand Vorschläge hat, wie man das besser machen könnte.
Hier das Desaster mal in voller Größe:
Grüße, pktm
Ich suche ein paar Vorschläge, wie man meinen Code etwas übersichtlicher / ordentlicher gestalten könnte.
Die Siuation ist folgende: Es geht darum, aus einer Liste mit Objekten jene heraus zu filtern, die bestimmte eigenschaften erfüllen. Die Objekte, die da in einer Liste stehen kommen aus einer externen API.
Nu haben diese Objekte spezifische EIgenschafte, die ich mittels Funktionen in Variablen einlese:
Code:
String hasTag = this.getSpecificDataPropertyValue("hasTag", props);
String hasTier = this.getSpecificDataPropertyValue("hasTier", props);
String contains = this.getSpecificDataPropertyValue("contains", props);
String startsWith = this.getSpecificDataPropertyValue("startsWith", props);
String endsWith = this.getSpecificDataPropertyValue("endsWith", props);
props ist eine HashMap mit komplexen nicht einfach mal eben abzufragenden Objekten als Schlüssel (sonst könnte man ja einfach damit arbeiten -.-), und Mengen von komplexen Objekten als Werte. Deswegen habe ich mir eine Methode geschrieben, die diese HashMap beackert und mir zu einem Key den ich als String spezifiziere den passenden Wert heraus sucht.
Soweit so gut, jetzt gibt es eine Reihe von solchen Eigenschaften, die in einer gewissen Abhängigkeit stehen:
Code:
if (hasTier != null && (hasTag != null || contains != null || startsWith != null || endsWith != null )) {...}
Und je nach dem, welcher dieser Werte nicht null ist (Reihenfolge ist egal), soll daraus ein anderes Objekt erstellt werden. Und genau das finde ich nun wirklich nciht schön:
Code:
ResultLeaf rl = null;
if( hasTag != null ) {
rl = new ResultLeaf(hasTier, hasTag);
}else if( contains != null ) {
rl = new ResultLeaf(hasTier, contains);
}else if( startsWith != null ) {
rl = new ResultLeaf(hasTier, startsWith);
}else if( endsWith != null ) {
rl = new ResultLeaf(hasTier, endsWith);
}
result.add(rl); // etwas mit dem Objekt machen
Nun die Frage an euch, ob jemand Vorschläge hat, wie man das besser machen könnte.
Hier das Desaster mal in voller Größe:
Code:
Map props = reasoner.getDataPropertyRelationships(owl_individual);
String hasTag = this.getSpecificDataPropertyValue("hasTag", props);
String hasTier = this.getSpecificDataPropertyValue("hasTier", props);
String contains = this.getSpecificDataPropertyValue("contains", props);
String startsWith = this.getSpecificDataPropertyValue("startsWith", props);
String endsWith = this.getSpecificDataPropertyValue("endsWith", props);
if (hasTier != null && (hasTag != null || contains != null || startsWith != null || endsWith != null )) {
ResultLeaf rl = null;
if( hasTag != null ) {
rl = new ResultLeaf(hasTier, hasTag);
}else if( contains != null ) {
rl = new ResultLeaf(hasTier, contains);
}else if( startsWith != null ) {
rl = new ResultLeaf(hasTier, startsWith);
}else if( endsWith != null ) {
rl = new ResultLeaf(hasTier, endsWith);
}
}
Grüße, pktm