Un nouveau venu qui développe java depuis environ un mois écrit pour sortir ce qu'il a appris en lisant Effective Java. Je vise un article aussi simple que possible à comprendre même pour les débutants, en décomposant mon interprétation et en l'expliquant.
La réduction de la portée des variables locales peut améliorer la lisibilité et la maintenabilité de votre code et réduire le risque de commettre des erreurs.
badPractice1
String hoge = "hoge";
int fuga;
double piyo = 0.1;
doSomething(hoge);
... //Certains traitements
doSomething(fuga); //Quel est le type de fuga? Quelle est la valeur initiale?
... //Certains traitements
{
doSomething(piyo) //Quel est le type de piyo? Quelle est la valeur initiale?
}
—— Détourne l'attention du lecteur.
-> J'essaie de comprendre ce que je fais, mais j'utilise les ressources de mon cerveau pour me souvenir des variables.
goodPractice1
String hoge = "hoge";
doSomething(hoge);
... //Certains traitements
int fuga = 10;
doSomething(fuga);
... //Certains traitements
double piyo = 0.1;
{
doSomething(piyo)
}
--Déclarez la première fois qu'une variable locale est utilisée.
-> Il n'est pas nécessaire de mémoriser le type de variable et la valeur initiale, et le lecteur peut se concentrer sur la compréhension du processus.
exception
Hoge hoge = null;
try {
hoge = hogeHoge();
} catch (HogeException e) {
e.hoge();
}
hoge.doSomething();
-> Dans un tel cas, une initialisation rationnelle n'est pas possible.
badPractice2
Iterator<Hoge> i = hoge.iterator();
while(i.hasNext()) {
doSomething(i.next());
}
Iterator<Hoge> i2 = hoge2.iterator();
while(i.hasNext()) { //Il y a un bug
doSomething(i2.next());
}
goodPractice2
for (Iteratro<Hoge> i = hoge.iterator(); i.hasNext()) {
doSomething(i.next());
}
//Erreur de compilation-je n'ai pas trouvé
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());
}
-> Il a un style d'écriture très sophistiqué et est plus facile à lire que tout.
badPractice4
public int calcTotalAmount(int price) {
double taxRate = 1.1;
... //Traitement pour calculer le prix TTC
... //Traitement pour calculer les frais d'expédition
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;
... //Traitement pour calculer le prix TTC
return taxIncludedPrice ;
}
public int calcShippingFee(int price) {
... //Traitement pour calculer les frais d'expédition
return shippingFee;
}
-> Il ne contient pas de variables locales inutiles dans la portée, ce qui réduit la possibilité de bogues.
Recommended Posts