Je suis un peu confus sur ce que la méthode code> initialiser code> est généralement utilisée dans un constructeur.
Pourquoi ne puis-je pas tout simplement mettre tout dans le constructeur et pourquoi l'échantillon ci-dessous appelle-t-il le Méthode d'initialisation? p> existe une convention normalement utilisée? P> Dans cet exemple, ai-je besoin du mot ceci code> dans la méthode code> initialiser code>? p> p>
5 Réponses :
Ce que vous avez posté est un assistant privé méthode em>, pas une classe. P>
Il est simplement utilisé pour que le constructeur ne soit pas encombré d'un code d'initialisation et afin de donner un bon nom pour ce qui est fait. p>
Dans votre exemple spécifique, il semble avoir une faible valeur. P>
... et dans ce cas, je pense que c'est redondant. Un constructeur "initialise" des choses "initialise", pas besoin de créer une autre méthode qui fait la même chose (à moins que vous ne partageez la mise en œuvre commune qu'elle entre plusieurs constructeurs).
@ Merlynmorgan-Graham - Je suis d'accord et j'ai fait ce point dans ma réponse.
première chose est le code lisible si vous séparez la fonctionnalité dans ses propres méthodes. P>
Deuxièmement, parfois dans certaines situations, vous voudriez faire le public d'initialiser afin que le développeur puisse l'utiliser après que le constructeur soit appelé que vous ne voulez pas que le code soit exécuté dans le constructeur. C'est généralement le cas si vous avez une forme et que vous souhaitez que le code d'initialisation soit exécuté avant qu'un formulaire ne soit affiché, etc. P>
1: L'utilisation de la méthode d'initalize pourrait être deux fois: p>
Dans votre exemple spécifique, bien que son peu de sens. p>
2: dans le cas de Encore une fois dans votre exemple de son peu de sens. Il aurait pu utiliser indifférentant entre des implémentations de propriétés ou de méthodes dans une classe de base et la classe actuelle (c'est-à-dire que vous utilisez ceci code>: p>
base. Code> au lieu de
(code>) p>
Pourquoi ne puis-je pas simplement mettre tout dans le constructeur et pourquoi l'échantillon ci-dessous appelle-t-il la méthode d'initialisation? P>
Vous pouvez tout mettre dans le constructeur. Dans ce cas simple, vous devriez. Les constructeurs sont pour em> initialisation de votre objet. P>
Parfois, vous avez quelque chose de plus compliqué cependant: p>
- Parfois, vous voudrez une méthode distincte d'initialisation code> Initialiser code> car vous souhaitez l'appeler à une heure distincte de la construction. LI>
- Parfois, vous en voulez un parce que vous écrivez plusieurs constructeurs et que vous souhaitez partager une partie de la mise en œuvre entre elles. LI>
- Parfois, votre initialisation est compliquée et vous voulez donner les morceaux de bons noms afin que vous sachiez ce que votre code fait. Donc, vous cassez ces morceaux en méthodes distinctes. LI> ul>
Aucun de ceux-ci n'est le cas de ce code, alors je voudrais simplement le sauter et jeter le code dans le constructeur. P>
y a-t-il une convention normalement utilisée? P> BlockQuote>
Non. Les gens font tout ce qui est le plus facile à lire et à comprendre, tout ce qui nécessite que le moins de code supplémentaire soit écrit, et quelle que soit la moindre duplication du code. P>
Cependant, si vous faites le
initialize < / Code> Méthode publique, et ne pas l'appeler du constructeur, je vous recommande vivement de l'appeler
initialiser code>. Concevez-le à seulement être appelé une fois. P>
Dans cet exemple, ai-je besoin du mot "ceci". Dans la méthode d'initialisation? P> BlockQuote>
Non. Vous n'avez jamais besoin d'utiliser
ceci code> pour accéder aux membres de la classe sauf si vous avez une autre variable locale avec le même nom. Voici un tel cas: p>
xxx pré> blockQuote>
Il n'y a pas de norme convenue, mais "Initialiser" est un mot bien connu qui est instantanément reconnaissable à quiconque lisant le code et me dit tout ce que j'ai besoin de savoir sur le but de la méthode. Il pourrait être appelé Pourquoi ne puis-je pas tout simplement mettre tout dans le constructeur? P>
blockQuote>
Vous pouvez, mais la casser dans une méthode aide à rendre les choses plus lisibles. Lorsque votre constructeur est une ligne de code, ce n'est pas vraiment nécessaire. P>
Dans cet exemple, ai-je besoin du mot "ceci". Dans la méthode d'initialisation? P>
blockQuote>
Dans le code que vous avez posté non, ce n'est pas nécessaire. Pourquoi est-ce là? Aurait pu être autogogéné par un outil, pourrait être une convention ou un style que quelqu'un a utilisé, aurait pu être collé d'ailleurs où il était nécessaire ... P> bob () code> mais c'est beaucoup moins utile! P>
De cette façon, le code de la méthode d'initialisation peut être appelé de quelque part d'autre que le constructeur.
Pour vos deux questions, une réponse commune: meilleure lisibilité. Et pour la méthode séparée, un point de plus, un point de vue est d'aider à suivre principe sec.
Dupliquer possible: Stackoverflow.com/Questtions/4414471/...