Programmstrukturen

Status
Nicht offen für weitere Antworten.

Sanix

Top Contributor
Hi,
Also ein paar Programmdesign Fragen:
Ich habe eine Applikation, die selber bestimmte Dinge verrichtet.
Um diese zu tun, müssen zuerst immer bestimmte Sachen geprüft werden. Wie würdet ihr das aufbauen?
Ich habe es jetzt mit if else gemacht, dann Methoden mit Rückgabewerten mit true oder false.

Bsp.

Code:
private void baueHaus
{
if(landgekauft)
{
 kein land
}
else if(geldvorhanden)
{
 kein geld
}
else
{
 baueHaus
}

}

Jedoch gibt es dann immer kompliziertere Strukturen durch Verschachtelungen von if und else. Eine andere Variante wäre ja, wenn ich immer eine Exception schmeissen würde, wenn etwas nicht vorhanden ist. Dann wird der restliche code automatisch nicht ausgeführt und direkt zum try catch Block gesprungen.
Wie wird das normalerweise gehandhabt?



Wie beginnt ihr normalerweise mit einem Programm? Ich habe jetzt meines immer wieder erweitert und teilweise halt die Strukturen wieder umgestellt, damit es übersichtlicher wird. Teilweise muss mann dann ein bisschen viel ändern, weil der Code sonst im Chaos ausartet. Oder erstellt ihr von Anfang an ein Design? Die Frage ist dann aber, ob ihr an alles denkt, was wohl eher schwierig ist.
 

André Uhres

Top Contributor
Um Verschachtelungen zu vermeiden, brech ich gewöhnlich die Methode einfach mit return ab, sobald eine Bedingung nicht erfüllt ist.

Ich überlege mir zu Beginn die grobe Programmstruktur, die ich dann nach und nach erweitere. Natürlich kommt es auch zu Refactoring, meistens in der Art, daß ich innere Klassen auslagere, oder aus einer Klasse, die verschiedene Funktionen erfüllt, zwei mache.

Wenn man ein bekanntes Design Pattern einsetzen will, muss man das natürlich sehr früh entscheiden, denn nachträglich kann man's schwer oder gar nicht mehr einbauen.
 

mikachu

Top Contributor
in bezug auf deine methode tu ich mir es grad angewöhnen, erst mal zu prüfen, was denn alles nicht sein kann/darf.
wenn eins dieser dinge zutrifft, beende ich die methode mit nem return.
 

Seppel

Bekanntes Mitglied
Ich weiß nicht ob ich dich falsch verstanden habe, aber du kannst doch alles in separaten if Methoden setze.

Code:
private void baueHaus 
{
 if(landgekauft) 
{ 
kein land notwendig
} 

if(geldvorhanden && kein land notwendig) 
{ 
kein geld benötigt
} 
if(kein land notwendig && kein geld benötigt && kein Haus)
{ 
baueHaus 
} 

}

Wenn du alles mit Exception abfangen lasst hast du nicht gekonnt den die Abfrage wird abgebrochen ohne Ergebnis.
Und das willst du doch sicherlich haben?
 
G

Gast

Gast
Hallo,

ein sehr einfacher Weg solche "if" Strukturen aufzuloesen sind enums.

Bsp.

Code:
private enum Condition {

    LANDGEKAUFT(
        public boolean isValid() {
            return landgekauft;
        }

        public void machEt() {
            // HIER GEHTS AB
        }

        ),GELDVORHANDEN...
        ;

    public abstract boolean isValid();

    public abstract void machEt();

}

public void baueHaus() {

    for (Condition condiotion:Condition.values()) {
        if (condition.isValid()) {
            conidtion.machEt();            
        } else {
            // nothing to do
        }
    }

}

Damit muesstest du neue Bedingungen nur in die Enum einfuegen.

Der obige Code wird wahrscheinlich syntaktische Fehler aufweisen. Hab leider gerade kein JDK zur Hand...Aber das Prinzip sollte hoffentlich klar geworden sein.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben