ich schreibe öfters zwei sehr ähnliche methoden, die nur einen kleinen unterschied aufweisen. (gehts da nur mir so?)
ein (fiktives) beispiel wären zwei methoden, die zahlen ausgeben und zwar entweder aufwärtszählend oder abwärtszählend:
in so nem fall mache ich dann ne neue methode:
die beiden anderen methoden lasse ich eventuell noch bestehen, sie rufen dann aber nur noch die 3. methode auf mit dem entsprechenden countMode.
würdet ihr in so ner situation eher
a) es genauso machen und dann zb folgende klassenvariablen deklarieren:
oder b) es mit mit enum machen:
oder c) versuchen Methode und Parameter so zu benennen, dass es eindeutig ist, welcher Mode true und welcher false ist:
wenn es sich schon aus dem namen ergibt, was true und was false bedeutet, also zb bei object.setEditable(boolean editable), dann finde ich diese lösung am besten. in meinem beispiel muss man sich aber zumindest ansehen, wie der parametername lautet (countUp).
variante B bietet sich IMO an, wenn man nicht weiß, wieviele möglichkeiten es in zukunft geben könnte. also zb wenn man goUp() und goDown() hätte und in Zukunft auch goLeft() und goRight() dazukommen könnten, dann würde ich es mit der Methode go(Direction direction) und enum Direction{UP, DOWN, LEFT, RIGHT} versuchen.
bei genau zwei Möglichkeiten wähle ich aber variante A.
wollte nun wissen, wie ihr es macht bzw. wie ihr es gerne vorfinden würdet in nem fremden code, was ihr als lesbarer / leichter verständlich anseht.
danke,
frank
ein (fiktives) beispiel wären zwei methoden, die zahlen ausgeben und zwar entweder aufwärtszählend oder abwärtszählend:
Code:
public void countDown(int initialValue) {
//vorarbeit
// zähle runter
//gib zahl aus
//eventuell noch was zu tun
}
public void countUp(int initialValue) {
//vorarbeit
// zähle rauf
//gib zahl aus
//eventuell noch was zu tun
}
in so nem fall mache ich dann ne neue methode:
Code:
public void countUpOrDown(int initialValue, boolean countMode) {
//vorarbeit
// je nach countmode zähle rauf oder runter
//gib zahl aus
//eventuell noch was zu tun
}
die beiden anderen methoden lasse ich eventuell noch bestehen, sie rufen dann aber nur noch die 3. methode auf mit dem entsprechenden countMode.
würdet ihr in so ner situation eher
a) es genauso machen und dann zb folgende klassenvariablen deklarieren:
Code:
public static final COUNT_UP = true;
public static final COUNT_DOWN = false;
oder b) es mit mit enum machen:
Code:
public enum CountMode {COUNT_UP, COUNT_DOWN}
oder c) versuchen Methode und Parameter so zu benennen, dass es eindeutig ist, welcher Mode true und welcher false ist:
Code:
public void count(int initialValue, boolean countUp) {..}
public void countUpOrDown(int initialValue, boolean countUp) {..}
wenn es sich schon aus dem namen ergibt, was true und was false bedeutet, also zb bei object.setEditable(boolean editable), dann finde ich diese lösung am besten. in meinem beispiel muss man sich aber zumindest ansehen, wie der parametername lautet (countUp).
variante B bietet sich IMO an, wenn man nicht weiß, wieviele möglichkeiten es in zukunft geben könnte. also zb wenn man goUp() und goDown() hätte und in Zukunft auch goLeft() und goRight() dazukommen könnten, dann würde ich es mit der Methode go(Direction direction) und enum Direction{UP, DOWN, LEFT, RIGHT} versuchen.
bei genau zwei Möglichkeiten wähle ich aber variante A.
wollte nun wissen, wie ihr es macht bzw. wie ihr es gerne vorfinden würdet in nem fremden code, was ihr als lesbarer / leichter verständlich anseht.
danke,
frank