Android Studio dit " variable Locale est redondant
J'obtiens un message d'avertissement sur le grand nombre de méthodes qui local variable is redundant
.
Voici un exemple de méthode:
public MyObject getMSListItem(int pos) {
MyObject li = getItem(pos);
return li;
}
Maintenant, il SEMBLE, je suppose que je peux faire pour résoudre ce problème:
public MyObject getMSListItem(int pos) {
return getItem(pos);
}
Un autre exemple:
public String getTeacher(int pos) {
ffTeacherListItem t = getItem(pos);
String teacher = t.teacher;
return teacher;
}
Semble que ce pourrait être:
public String getTeacher(int pos) {
ffTeacherListItem t = getItem(pos);
return t.teacher;
}
OU comme recommandé ci-dessous, c'est encore mieux!
public String getTeacher(int pos) {
return getItem(pos).teacher;
}
Est-il vraiment une "meilleure pratique" pour cela? Est une façon meilleure que l'autre? Ou est-ce juste au sujet de la lisibilité du code et rien de plus?
- Eh bien, votre IDE est certainement ce que pense c'est une bonne pratique 🙂
return getItem(pos).teacher
- Oui, et la façon dont il vous dit de faire est correcte. Il n'y a pas de raison de créer une copie de quelque chose quand vous pouvez juste retour de cette instance.
- ce n'est pas une copie. Il s'agit simplement d'un nom de référence, au lieu d'avoir un anonyme de référence.
- la suppression de la redondance est uniquement cosmétique. Cela ne change rien à votre code. Mais moins de lignes est toujours bon quand il n'y a pas de complexité ajoutée.
- Aussi, éviter d'avoir des variables temporaires avec insensée noms.
t
ouli
ne dit rien à propos de ce que cet objet est en train de faire (ce qui est logique puisque c'est ne rien faire.) - Je pense que la meilleure réponse à cette question. Rien n'est changé à la fin en dehors de nettoyeur de code.
- c'est bon à savoir, je dois avoir mal compris que dans l'apprentissage de java. Je pensais que MyObject li = getItem(pos) une copie de l'objet référencé, tandis que, si li avait déjà été créée il serait un nom de référence.
- Retrait de la redondante variable locale est une "meilleure pratique" en raison d'une meilleure lisibilité. Il n'est pas non plus-ou en tant que votre question suggère.
- Je pense que ma confusion, et @njkz2 peut-être que vous pouvez aider, c'est que le nom de variable de référence devront être instancié si c'est passé comme une variable à une méthode. Qu'est ce qui permet à des valeurs transmises à des méthodes pour être modifié dans la mémoire. Non?
Vous devez vous connecter pour publier un commentaire.
Simplifiée dit: Dans votre scénario c'est inutile. Il n'est pas incorrect, mais pourquoi vous vous faites cela:
quand vous pouvez faire la même chose avec:
ou vous pouvez aussi le faire:
Au-dessus de tous faire la même mais le deuxième et le troisième code est plus propre, et vous devriez toujours essayer d'écrire du code propre, sans inutile lignes et les références1. Il y a aussi la règle non écrite - Moins de code, moins d'erreurs.
1C'est "l'avantage" des langages tels que le C++ qui n'ont pas de garbage collector et vous êtes responsable de tous les objets et instances que vous allez créer (leurs libérer de la mémoire, etc.). Si vous êtes à réfléchir plus avant que vous décidez de créer une nouvelle instance d'un Objet.
getItem().getTeacher().getClass().getStudents()
, et cette ligne jette unNullPointerException
, vous n'avez aucune idée de qui des trois est retournénull
.