So, hier ist meine Funktionen:Es gibt zwei Funktionen mit der gleichen Struktur, aber verschiedenen Details. Wie man Doppelarbeit loswird?
private void sendLeft() {
leftSendersIndexes = newLeftSendersIndexes;
Agent rightRecepient;
int rightRecepientIdx = 0;
Agent leftSender;
for (int i = 0; i < leftSendersIndexes.size(); i++) {
rightRecepientIdx = leftSendersIndexes.get(i) + 1;
rightRecepient = list.get(rightRecepientIdx);
leftSender = list.get(rightRecepientIdx - 1);
rightRecepient.setNewLeftMsg(leftSender.getLeftMsg());
rightRecepient.setLeftMsg(0); // reset left messages
}
}
private void sendRight() {
rightSendersIndexes = newRightSendersIndexes;
Agent leftRecepient;
int leftRecepientIdx = 0;
Agent rightSender;
for (int i = 0; i < rightSendersIndexes.size(); i++) {
leftRecepientIdx = rightSendersIndexes.get(i) - 1;
leftRecepient = list.get(leftRecepientIdx);
rightSender = list.get(leftRecepientIdx + 1);
leftRecepient.setNewRightMsg(rightSender.getRightMsg());
}
}
Sie sind sehr ähnlich. Das Problem ist, dass ich in der ersten Funktion habe ich leftRecepientIdx+1
und danach leftRecepientIdx-1
und ich habe leftRecepientIdx-1
und leftRecepientIdx+1
in zweiter Funktion. Ich kann zwei Funktionen in einem kombinieren und einen booleschen Parameter hinzufügen. Aber gibt es einen besseren Weg, um Doppelarbeit loszuwerden?
Sie sind sehr ähnlich. Sind sie ähnlich genug? –
können Sie die Unterschiede vielleicht in verschiedenen Verhaltensklassen kodieren und Zusammensetzung verwenden, um das unterschiedliche Verhalten zu delegieren ... –
Es ist eine Frage der Meinung, aber für mich sehen sie ausreichend anders aus, dass der Versuch, sie zu einem zu kombinieren, ein totales Durcheinander schaffen würde wenn's und ternäre Operatoren. –