J'ai un collègue qui utilise un outil de refactoring C #. L'outil pour une raison quelconque perfers: sur p> Nous lui avons demandé de l'éteindre simplement parce que c'est gênant d'avoir Tout le code réécrit automatiquement, mais ce n'est pas le point. P> est-ce que je manque quelque chose, ou est-ce juste faux? Pourquoi je voudrais-je ceci.fooo () code>? P> p>
6 Réponses :
C'est une chose de style. Parfois, les gens pensent que cela rend le code plus clair - apparemment, certaines personnes trouvent utile d'être explicites sur la cible d'une invocation de méthode. Personnellement, je trouve l'utilisation parasite de ce code> à distraire. P>
Si vous voulez l'utiliser, utilisez-le. P>
Si vous ne voulez pas l'utiliser, ne l'utilisez pas. P>
Il n'y a pas de bonne réponse ici. P>
Si pour une raison quelconque, vous avez une convention de dénomination où le nom seul ne suffit pas pour déterminer si vous envisagez une variable locale, un paramètre de méthode, un champ d'instance, une propriété ou une méthode, vous devez corriger La convention de dénomination, au lieu de préfixer les champs locaux avec ceci. code> pour les distinguer des variables locales. P>
Je pense que cela revient à une question de syntaxe vs sémantique. L'argument pour L'argument évident contre celui-ci: souris-over et ctrl + click. P> ceci.fooo () code> est-il très explicitement désignant exactement ce que FOO () est et à son origine. Il n'y a pas de merveille s'il s'agissait d'un argument transmis à une méthode, ou une classe statique déclarée qui sait-le savoir. C'est une méthode sur l'objet actuel, période. Quelque chose de moins et vous abandonnez une sémantique claire en faveur de la syntaxe plus serrée. P>
Si le seul argument contre celui-ci est de la souris, je serais en faveur de cela, car vous devriez pouvoir lire le code à l'écran sans aller à la recherche de souris avec la souris. La convention de dénomination résoudrait cela.
Je suis enclin à être d'accord. C'est l'une de ces "oui-i-a-have-a-a-a-a-a-préférences-mais pas - aussi fort-que je suis-je-suis-je suis-je-je suis-je-je suis-je-la-question - à participer à un saint-guerre Constitution des ARDS-and-Conventions-et-Constitution - Des problèmes. Je suis largement tombé amoureux de C # car il est syntaxe concise et significative par rapport à ce que j'étais habitué à. Un peu de Smidgen de verbosité n'est pas nécessairement une mauvaise chose cependant.
Oui, d'accord, et c'est le problème avec cette question, tout est tombé au choix et à l'opinion. Je vais voter pour le fermer.
Cet exemple montre comment le mot clé code> (code> peut être utilisé pour décrire explicitement la portée de la variable:
class Item { int id; public Item (int id) { this.id = id; } }
C'est une horrible convention de dénomination de toute façon. Je n'utilise pas ceci. Code> Mais je ne vais pas dire aux gens à ne pas l'utiliser, mais je vous le dise sérieusement (ou quelqu'un d'autre) de ne pas utiliser cette convention de dénomination. Corrigez le problème de la convention de dénomination et la question de
ceci. Code> vs non
ceci. Code> devient encore une question d'opinion.
@Lasse V. Karlsen Dans cet exemple, pour démontrer votre convention préférée, quel nom utiliseriez-vous pour le paramètre au lieu de ID code>?
@Lasse V. Karlsen: Je conviens que ce n'est pas la meilleure convention, mais certains IDes, par exemple Netbeans, génèrent automatiquement le constructeur en utilisant ...
@Lasse: Merci d'avoir partagé .. Pourriez-vous me dire s'il vous plaît comment nommer des champs et des paramètres?
J'aime préfixer les champs avec _ code>. donc
int _id; code> dans ce cas. Encore une fois, marcher fermement dans le domaine de l'opinion subjective ... J'ai tendance à faire ce que vous faites lors de la mise en place de propriétés automatiques dans un constructeur, où il n'y a pas de champ.
Pour ce que ça vaut la peine, blogs.msdn.com / B / ERICLIPPERT / Archive / 2009/07/06 / ...
Comme d'autres réponses ici, il s'agit principalement d'une question de style.
plusieurs fois un appel à Dans ce cas, le est-ce nécessaire em>? Non, et la Lasse V. Karlsen souligne correctement que le Mais je trouve que je vais fréquemment utiliser le foo () code> serait sans ambiguïté sans le code> , mais il y a des moments où cela pourrait ajouter de la clarté. Par exemple: p>
ceci. CODE> PREFIX aide à rendre l'invocation de la méthode se démarquer des invocations de délégués. P>
ceci. Code> est juste un substitut pour une convention de dénomination qui le rend sans ambiguïté. P>
this.foo code> préfixe sur les propriétés locales em> pour une raison similaire, où est encore une question de style. p> p>
J'utilise toujours ceci. code> car il montre explicitement où se trouve la chose. Je n'utilise même pas un outil de refactoring pour le faire. Je le tape à la main. P>
Voter pour fermer cette question aussi subjective et argumentative. Il n'y a pas de bonne réponse définitive ici, tout est tombé aux opinions et au style. Fondamentalement, c'est un sondage déguisé.
Notez que si vous essayez d'utiliser une méthode d'extension (disons que votre classe implémente iEnumerable et que vous souhaitez appeler cela.count ()), vous devez utiliser "Ceci". pour déclencher la méthode de l'extension.