Est-il préférable de créer un nouvel objet et de le retourner ou de créer le nouvel objet dans l'instruction de retour?
Par exemple:
public Person newPerson() {
Person p = new Person("Bob", "Smith", 1112223333);
return p;
}
par opposition à:
public Person newPerson() {
return new Person("Bob", "Smith", 1112223333);
}
Est un plus efficace que l'autre?
Vous devez vous connecter pour publier un commentaire.
Affectation à une variable temporaire avant de retourner vous donne une chance de faire une vérification d'erreur et de correction de l'intérieur de votre newPerson(). De retour le nouvel appel exige de l'appelant de votre newPerson() la méthode de capture et de corriger les erreurs.
newPerson
n'est pas nécessaire de renvoyer un nouvel objet (et peut retourner une sous-classe), alors que le constructeur doit renvoyer une nouvelle instance dePerson
qui s'égare loin de Java de l'interface de la conception orientée.Il n'y a pas de différence et qui vous a choisi l'un sur l'autre en termes de performances.
En général, j'aimerais des conseils pour le second, et à chaque fois que vous avez besoin de déboguer cette, faire un temporaire de passer à la première (deux lignes) variante.
Personne n'est pas plus efficace que l'autre, l'équipe inline le plus efficace lors de l'exécution.
Dans un monde sain, ils vont compiler pour exactement la même bytecode, de sorte qu'ils sont identiques, comme la mesure de la performance est concerné. La seule différence est pour les humains:
La création d'une variable temporaire permet de déboguer un peu plus facile: vous pouvez mettre un point d'arrêt sur l'instruction de retour et inspecter la valeur de
p
. Dans la version d'une ligne, c'est plus difficile à faire.De le faire en une seule ligne élimine une variable, la réduction de la complexité, rendant le code plus facile à lire.
Dans la pratique, je voudrais l'écrire en une seule ligne, et dans le pire des cas, j'ai créer une variable temporaire si je rencontre le problème de débogage. En outre, ne sont pas des tests unitaires censé éliminer la nécessité pour le débogage? 🙂
La deuxième option est plus court et plus facile à lire.
Je doute que tout bon compilateur Java créerait moins efficace du code pour la première option si.
L'un n'est pas plus efficace que l'autre, mais le retour objet créé directement est probablement plus propre depuis que vous êtes en utilisant moins de variables temporaires. Si vous devez utiliser des variables temporaires, faire
final
nom approprié.p
est une variable temporaire. C'est tout simplement ce qu'il a appelé. L'a toujours été, sera toujours.