Mi è stato detto da un professore che l'invocazione esplicita del costruttore utilizzando this
era "scarsa pratica di codifica" e penalizzata per questo. Tuttavia, non sono stato in grado di trovare nulla in nessuna guida di stile java che ho guardato attraverso i commenti su di esso in un modo o nell'altro. Inoltre, sembra che sia stato fatto in un bel po 'di esempi di codice che ho visto. Speravo di ottenere qualche input sul fatto che questa sia una pratica di programmazione scadente e perché.Invocazione Constructor esplicita che usa "this" come pratica di codifica scadente?
Un esempio di ciò che mi riferisco a:
public class SomeClass {
private int a;
private int b;
public SomeClass() {
this(0);
}
public SomeClass(int a) {
this(a, 0);
}
public SomeClass(int a, int b) {
this.a = a;
this.b = b;
}
}
EDIT: Il suo commento era esattamente "un costruttore di chiamare un costruttore della stessa classe non è buona pratica Un costruttore crea un oggetto, in modo da chiamare. un costruttore che chiama un altro costruttore cosa sta accadendo in memoria?
e questo era il codice specifico:
public class Employee {
private String name;
private int monthlySalary;
// Default constructor
public Employee() {
this("", 0);
}
// Constructor
public Employee(String name, int monthlySalary) {
this.name = name;
this.monthlySalary = monthlySalary;
}
// annualSalary() method returns the annual salary of the employee as an int
public int annualSalary() {
return monthlySalary * 12;
}
// toString() method returns the employee name and monthly salary as a
// String in the format: name, monthly salary
public String toString() {
return "Name: " + name + "\t\tMonthly Salary: " + monthlySalary;
}
}
Hanno dato un ragionamento per essere una cattiva pratica di codifica? L'unica ipotesi che posso fare è usare troppe variabili con lo stesso nome (confusione tra variabile di classe e variabile di metodo), ma non sono ancora sicuro al 100% sul perché direbbero che ... – Draken
Penso che sia molto meglio di riassegnare le tue variabili in ogni sovraccarico. – shmosel
È solo un professore, non è la massima autorità in questa domanda basata sull'opinione pubblica. Ovviamente l'uso di 'this()' renderà i tuoi costruttori dipendenti dagli altri costruttori, ma quanto sia "pericoloso" quel tipo di dipendenza, è discutibile. Gli utenti – Kayaman