Chaîne privée ou public static String?
Lors de mon stage un de mes collègues m'a donné un indice. Je veux savoir si c'est une bonne pratique.
Ce que je faisais était de la création de classes qui sont utilisés uniquement pour les valeurs qu'elles contiennent et n'ont pas toutes les fonctions que de réellement faire quelque chose (en dehors d'avoir des getters, setters et un constructeur). J'ai déclaré mes variables comme ceci:
public class ObjectIUse{
Private String name;
public ObjectIUse(String name){
this.name = name;
}
public String getName(){
return name;
}
}
Donc je ne suis pas à l'aide d'un poseur parce qu'il doit toujours rester le même. Mon collègue a dit que je peux aussi le faire de cette façon:
public class ObjectIUse{
public final String name;
public ObjectIUse(String name){
this.name = name;
}
}
Parce que, maintenant, nous n'avons pas besoin d'avoir des accesseurs ou setters parce que c'est public, mais il peut aussi ne jamais être modifié, car il est définitive.
Qui serait le mieux? Ou serait-il peut-être préférable de toujours faire en privé, mais aussi final? Je veux dire toutes les options de travail, évidemment. Je veux juste savoir ce qui est mieux et pourquoi.
Ce Sayem a dit. Membre du Public les variables sont "considérées comme nuisibles." Lorsque votre objet ne change pas (on dit qu'il est "immuable"), déclarer la variable membre
final
. Cela vous oblige à mettre dans le constructeur et l'empêche de changer, même si quelqu'un est le reflet de votre instance de classe.C'était aussi ce que je pensait être la meilleure option. Quel est votre raisonnement?
Comme Gandalf dit à Frodon: "Garder cela secret, de les garder en sécurité"
finale privée BLABLABLA;
OriginalL'auteur WereWolfBoy | 2013-03-28
Vous devez vous connecter pour publier un commentaire.
Faire de la variable privée, car en le faisant, vous serez l'encapsulation la variable dans votre classe. Cela a de nombreux avantages, se cacher de l'information est parmi l'un, que vous apprendrez si vous allez sur le lien ci-dessus.
Si vous le voulez, pour ne jamais changer après la création, puis de la rendre définitive.
Oui, dans la qualité de la production de code que vous devez toujours essayer d'utiliser les données privées des membres. Et oui, c'était bizarre qu'ils ont essayé de vous apprendre pendant que vous faisiez stagiaire (je veux dire, vous êtes censé apprendre à écrire du code de qualité industrielle tout en faisant stagiaire, non?). Il est toutefois OK pour le rendre public dans votre test/jouer/projets animal, par exemple, mais il n'est jamais OK dans la qualité de la production de code. Peut-être que vous devriez poser à ce sujet......
Je dirais que cette personne est un hacker, pas un développeur, et n'a probablement pas comprendre toutes les ramifications de sa décision volontaire. Et, ayant vu ses conseils, je voudrais être las au sujet de tout ce qu'elle dit de moi dans le futur. Mais, gardez à l'esprit, en tant que stagiaire, ils vous traitent comme si vous ne savez pas de quoi vous parlez, alors n'essayez pas de faire valoir le point.
OriginalL'auteur MD Sayem Ahmed
Cela fonctionne aujourd'hui parce qu'un
String
est immuable. Mais ce qui arrive quand vous exposer la référence à une mutable classe et que la classe n'est pas thread-safe ?. Vous ne pouvez pas revenir encore une défensive copie si vous le souhaitez.De ne pas mentionner aussi les pauses de l'encapsulation. Utiliser une variable privée et des getters.
OriginalL'auteur Deepak Bala
L'idée de ne pas fournir une méthode de définition d'une variable en fait un champ en lecture seule, cela dit, il signifie que nous ne pouvons lire, mais pas écrire, ce qui en fait une constante par l'utilisation de la
final
mot résume tout.Je pense qu'une constante est mieux.
final
mot-clé améliore les performances. Lire plus iciOriginalL'auteur tmwanik
Vous devriez vraiment avoir un getter et faire de votre domaine privé. Qu'est ce qu'on appelle l'encapsulation.
Aussi en rendant final et donc, ne pas avoir un setter, votre objet est immuable, qui est une très bonne chose pour la programmation parallèle.
OriginalL'auteur tibo
Une bonne utilisation de l'encapsulation de principe est de rendre tous les champs de la classe privée et de l'accès via les setters et getters. Autre que cela, vous pouvez ajouter toute logique supplémentaire lorsque vous appelez
getName()
. Tandis que la seconde variante est parfois utilisé, le premier est le meilleur. Espérons que cette aide.OriginalL'auteur Egor
Si vous voulez avoir du succès développeur, vous devez programmer correctement, efficacement et le plus important en toute sécurité. La sécurité et la performance est à la première place.
Lorsque vous le rendre public, vous briser encapsulation qui est très important et a de nombreux avantages. Chaque fois que vous voulez pour obtenir la propriété de l'Objet, les méthodes de lecture deviendra votre ami.
En général, vous ne devriez pas avoir un accès direct aux propriétés de l'Objet(uniquement en cas extrem, mais aussi ceux-ci peuvent être résolus en mieux). Les accesseurs et Mutateurs sont désignés pour ces fins - de préserver l'encapsulation et de traiter avec des objets en toute sécurité.
final variables
sont généralement utilisés pour les données qui sont immuables pendant un temps.OriginalL'auteur Simon Dorociak
Je suppose que leur raisonnement est que de l'avoir
public
conserve le code plus simple. Java obtient critiqué pour être trop bavard dans des situations de ce genre. Plus un langage comme Javascript, si cela peut (normalement) toujours êtrepublic
.Mais cette simplicité est un compromis contre le fait d'avoir sécurisé, stable et extensible code.
À voir pourquoi c'est important, prendre un coup d'oeil à une grande échelle Javascript projet qui a été écrit avec tout public. Chaque classe de code pourrait être simple... mais leurs relations, et l'architecture qui en résulte, finissent par être un cauchemar à maintenir.
OriginalL'auteur David Lavender
Je pense que ça dépend. Par exemple: si vous utilisez de lecture - vous pouvez l'annuler. Parfois, il est très utile.
OriginalL'auteur shapkin