Devo impostare il valore di un oggetto stringa "risultato" in base ai risultati di diversi metodi e diverse condizioni if / else. Alla fine, ci sarebbe uno (ultimo valore impostato) nella stringa che ho bisogno di usare. Il primo modo in cui l'ho fatto è:
public void MyClass(){
public void validateApples() {
String result = "failure";
if (condition 1) {
//do something
}
if (condition 2) {
//do something
}
if(condition 3) {
//do something
}
if (condition 4) {
if (condition a)
result = "success";
} else{
//One of the first three conditions resulted in failure so don't change string value
}
}
if (condition 5) {
//Do validation only for xml files
result = validateMachintoshApples ();
}
}
private String validateMachintoshApples() {
String result;
result = oneStepValidation();
return result;
}
private String oneStepValidation(){
String result;
if (some condition) {
// some code
result = "success";
}else{
// some code
result = "failure";
}
return result;
}
}
Sento che sto ricreando un nuovo oggetto String molte volte in diversi metodi della stessa classe. Non penso sia efficiente in termini di memoria, tempo di creazione dell'oggetto e standard di codifica.
Ho poi spostato la creazione di un oggetto stringa "risultato" per l'intera classe e l'ho assegnato a "fallimento" o "successo" perché penso che sarebbe stato più pulito codice (vedi codice sotto)
1) Ma dal momento che le punture sono immutabili in JAVA, otterrò qualcosa in questo modo?
2) Sto ancora creando una nuova stringa ogni volta con result="failure" o result="success" o è solo una variazione di valore? Dubito che sia un cambiamento di valore in quanto le stringhe sono immutabili.
3) La seconda via è meno leggibile poiché le funzioni impostano il valore per il risultato ma non restituiscono nulla?
4) Quale dovrebbe essere la migliore pratica in questo caso?
Il mio secondo modo di codifica è il seguente:
public void MyClass(){
private String result;
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
public void validateApples() {
if (condition 1) {
//do something
result = "failure";
}
if (condition 2) {
//do something
result = "failure";
}
if(condition 3) {
//do something
result = "failure";
}
if (condition 4) {
if (condition a)
result = "success";
} else{
//One of the first three conditions resulted in failure
}
}
if (condition 5) {
//Do validation only for xml files
validateMachintoshApples ();
}
}
private void validateMachintoshApples() {
result = oneStepValidation();
}
private void oneStepValidation(){
if (some condition) {
// some code
result = "success";
}else{
// some code
result = "failure";
}
}
}