Ein Neuling, der Java seit ungefähr einem Monat entwickelt, schreibt, um das auszugeben, was er durch das Lesen von Effective Java gelernt hat. Ich strebe einen Artikel an, der selbst für Anfänger so einfach wie möglich zu verstehen ist, indem ich meine Interpretation aufschlüssle und erkläre.
Durch die Minimierung des Bereichs lokaler Variablen kann die Lesbarkeit und Wartbarkeit Ihres Codes verbessert und die Wahrscheinlichkeit von Fehlern verringert werden.
badPractice1
String hoge = "hoge";
int fuga;
double piyo = 0.1;
doSomething(hoge);
... //Einige Verarbeitung
doSomething(fuga); //Was ist der Fuga-Typ? Was ist der Anfangswert?
... //Einige Verarbeitung
{
doSomething(piyo) //Was ist die Art von Piyo? Was ist der Anfangswert?
}
goodPractice1
String hoge = "hoge";
doSomething(hoge);
... //Einige Verarbeitung
int fuga = 10;
doSomething(fuga);
... //Einige Verarbeitung
double piyo = 0.1;
{
doSomething(piyo)
}
--Erläutern Sie das erste Mal, wenn eine lokale Variable verwendet wird.
-> Der Variablentyp und der Anfangswert müssen nicht gespeichert werden, und der Leser kann sich darauf konzentrieren, den Prozess zu verstehen.
exception
Hoge hoge = null;
try {
hoge = hogeHoge();
} catch (HogeException e) {
e.hoge();
}
hoge.doSomething();
-> In einem solchen Fall ist eine rationale Initialisierung nicht möglich.
badPractice2
Iterator<Hoge> i = hoge.iterator();
while(i.hasNext()) {
doSomething(i.next());
}
Iterator<Hoge> i2 = hoge2.iterator();
while(i.hasNext()) { //Es gibt einen Fehler
doSomething(i2.next());
}
goodPractice2
for (Iteratro<Hoge> i = hoge.iterator(); i.hasNext()) {
doSomething(i.next());
}
//Kompilierungsfehler-Ich habe nicht gefunden
for (Iteratro<Hoge> i2 = hoge2.iterator(); i.hasNext()) {
doSomething(i2.next());
}
goodPractice3
for (Iteratro<Hoge> i = hoge.iterator(); i.hasNext()) {
doSomething(i.next());
}
for (Iteratro<Hoge> i = hoge2.iterator(); i.hasNext()) {
doSomething(i.next());
}
-> Es hat einen sehr raffinierten Schreibstil und ist leichter zu lesen als währenddessen.
badPractice4
public int calcTotalAmount(int price) {
double taxRate = 1.1;
... //Verarbeitung zur Berechnung des Preises einschließlich Steuern
... //Verarbeitung zur Berechnung der Versandkosten
int totalAmount = taxIncludedPrice + shippingFee;
return totalAmount;
}
goodPractice4
public int calcTotalAmount(int price) {
int taxIncludedPrice = calcTaxIncludedPrice(price);
int shippingFee = calcShippingFee(price);
return taxIncludedPrice + shippingFee;
}
public int calcTaxIncludedPrice(int price) {
double taxRate = 1.1;
... //Verarbeitung zur Berechnung des Preises einschließlich Steuern
return taxIncludedPrice ;
}
public int calcShippingFee(int price) {
... //Verarbeitung zur Berechnung der Versandkosten
return shippingFee;
}
-> Es werden keine unnötigen lokalen Variablen in den Bereich aufgenommen, wodurch die Möglichkeit von Fehlern verringert wird.
Recommended Posts