Betrachten Sie die folgende Siutation. Ein Benutzer kann etwas eingeben wie 30D, 90D, 180D, 360D, 1M, 3M, 6M, 12M, 1Y (D = Tag, M = Monat, Y = Jahr).Ist es ratsam, Java Call-by-Wert zu "verwerten"
Ich möchte die Anzahl der Monate mit den folgenden beiden Methoden berechnen.
private int getLengthOfPeriodInMonths(Integer lengthOfPeriod, String unitOfPeriod) {
int periodInMonths = lengthOfPeriod;
if ("D".equals(unitOfPeriod)) {
periodInMonths = lengthOfPeriod/30;
} else if ("Y".equals(unitOfPeriod)) {
periodInMonths = lengthOfPeriod * 12;
}
return periodInMonths;
}
private int getLengthOfPeriodInMonths(Integer lengthOfPeriod, String unitOfPeriod) {
if ("D".equals(unitOfPeriod)) {
lengthOfPeriod = lengthOfPeriod/30;
} else if ("Y".equals(unitOfPeriod)) {
lengthOfPeriod = lengthOfPeriod * 12;
}
return lengthOfPeriod;
}
Da Java mit Call-by-Wert arbeitet mit einer Referenz als Wert übergeben lengthOfPeriod
wird nicht außerhalb des Verfahrens ändern. Ich bin mir nicht sicher, was besser geeignet ist.
Ich weiß, dass diese Methode mit einem Enum Periods
oder etwas ähnlichem refaktoriert werden könnte. Aber lass uns das hier nicht diskutieren.
könnten Sie erklären, was soll hier geschehen? – SomeJavaGuy
Tun Sie, was Ihren Code klarer macht. Mir geht es beiden gut. – khelwood
Ich denke, dass es ein allgemeines Problem geben könnte: Ein Programmierer könnte lengthOfPeriod (durch Setter) in der zweiten Methode ändern, die den Code außerhalb dieser Methode ändern könnte. – Chris311