Existe-t-il une convention pour nommer la méthode privée que j'ai appelée "_Add
" ici? Je ne suis pas un fan du soulignement de premier plan, mais c’est ce que suggère l’un de mes coéquipiers.
public Vector Add(Vector vector) {
// check vector for null, and compare Length to vector.Length
return _Add(vector);
}
public static Vector Add(Vector vector1, Vector vector2) {
// check parameters for null, and compare Lengths
Vector returnVector = vector1.Clone()
return returnVector._Add(vector2);
}
private Vector _Add(Vector vector) {
for (int index = 0; index < Length; index++) {
this[index] += vector[index];
}
return this;
}
J'ai l'habitude de voir et d'utiliser "AddCore" ou "InnerAdd"
Je n'ai jamais vu de convention de codage en C # distinguant les méthodes publiques et privées. Je ne suggère pas de le faire, car je ne vois pas l'avantage.
Si le nom de la méthode entre en conflit avec les méthodes publiques, il est temps de devenir plus descriptif; si, comme dans votre cas, il contient la méthode réelle implementation pour la méthode publique, une convention consiste à l'appeler *Impl
. C'est à dire. AddImpl
dans votre cas.
J'utilise habituellement thisCase pour les méthodes privées et ThatCase pour les méthodes publiques.
private Vector add(Vector vector) {
for (int index = 0; index < Length; index++) {
this[index] += vector[index];
}
return this;
}
public Vector Add(Vector vector) {
for (int index = 0; index < Length; index++) {
this[index] += vector[index];
}
return this;
}
Personnellement, pour les méthodes, j'ai la même convention de nommage, quelle que soit la visibilité.
Ce sont mes conventions de nommage pour C #:
Edit : Remarque: je suis coupable d'utiliser des noms de préfixe pour les méthodes privées. Je n'ai pas compris cette partie de votre question la première fois que je l'ai lue.
Par exemple, si j'ai 7 manières différentes d'exécuter mon instruction SQL via ma classe DatabaseCommand, comme QueryDataTable, QueryEnumerable, QueryEnumerable<T>
, QueryDataReader, etc., toutes ces méthodes veulent appeler les mêmes méthodes privées, j'ai tendance à appeler cette méthode. InternalQuery ou PrivateQuery.
Depuis que le public Add () fait des vérifications et que le privé ne:
private Vector AddUnchecked(Vector vector) {
for (int index = 0; index < Length; index++) {
this[index] += vector[index];
}
return this;
}
Les deux variantes que j'ai vues couramment utilisées sont les suivantes:
private Vector DoAdd(Vector vector) { ... }
et
private Vector AddImpl(Vector vector) { ... }
Aucune des deux n'est particulièrement satisfaisante, mais c'est ce que j'ai vu.
Je n'ai jamais vu de convention selon laquelle TOUTES les méthodes privées devraient avoir un préfixe - la simple pensée de le faire me fait frémir!
C’est déjà assez grave de traiter avec tous les développeurs C++ qui préfixent tous les membres visibles avec "_" - et je parle en tant qu’ancien développeur de Delphi qui préfixait chaque membre avec "F". Je me remets encore de ça!
Il est assez courant d'utiliser un trait de soulignement principal pour les propriétés privées, mais je ne l'ai jamais vu faire avec des méthodes.
Méthodes publiques:
public void Add()
{
}
this.Add()
Méthodes privées:
private void _Add()
{
}
_Add();
Propriétés:
public int Id {get;set;}
this.Id = 10;
Des champs:
private bool _isUsed;
_isUsed = false;
Variables locales:
bool isUsed;
Je pense qu'avec la plupart des conventions, il y a plus de liberté dans les affaires privées. Cependant, je vois cela souvent:
private Vector AddCore(Vector vector)
ou
private Vector DoAdd(Vector vector)
Cependant, je supprimerais probablement la méthode d'ajout privé et n'en aurais qu'un:
public static Vector Add(Vector vector1, Vector vector2)
{
// check if vector1 is null
Vector returnVector = vector1.Clone()
return returnVector.Add(vector2);
}
public Vector Add(Vector vector)
{
// check parameters for null, and compare Lengths
for (int index = 0; index < Length; index++) {
this[index] += vector[index];
}
return this;
}
Mettez également ces accolades au bon endroit :-)
Je choisirais ce que mes coéquipiers ont suggéré et en ferions une convention dans l’équipe. Mais dans le cas particulier, il semble que vous puissiez l'éviter:
public Vector Add(Vector vector) {
// check vector for null, and compare Length to vector.Length
for (int index = 0; index < Length; index++) {
this[index] += vector[index];
}
return this;
}
public static Vector Add(Vector vector1, Vector vector2) {
// check parameters for null, and compare Lengths
Vector returnVector = vector1.Clone()
return returnVector.Add(vector2);
}
Ou peut-être que je ne devrais tout simplement pas être sur SO si tardivement ...
EPiServer utilise la convention "... interne" comme dans AddInternal()
dans cette situation.
Oh j'ai oublié de dire pourquoi je fais ça. C'est parce que c'est un moyen simple de créer un traitement en utilisant une boucle pour les méthodes que j'aimerais appeler en séquence. Par exemple si j'ai une validation qui doit être faite légèrement différente à chaque fois mais en utilisant des méthodes avec la même classe. Je les ai configurés comme
add_process = array(1,2,3);
delete_process = array(2,6,4);
//delete user, users posts and users comments
foreach( process2 as value){
method_{value}_delete
}
Soyez descriptif avec les noms de méthodes pour créer du code qui s’explique, il ne devrait pas y avoir de collisions car deux méthodes ne devraient pas faire exactement la même chose, vous ne devriez donc pas avoir besoin d’un caractère avec lequel préfixer les noms de méthodes.
Certaines personnes préfixent les champs privés avec "m_", je n'ai pas vu de styles similaires pour les méthodes privées.
J'ai souvent rencontré cette convention, malheureusement, avec une tendance à nommer les contrôles sur un formulaire avec un soulignement (par exemple, "_txtFirstname" au lieu de "txtFirstname"). Il semble s'agir d'un effet de resserrement étrange de la pratique, désormais déconseillée par les États membres, de nommer les variables privées avec un trait de soulignement de premier plan. Cela, ou les programmeurs adorent utiliser la touche de soulignement sans aucune raison que je puisse comprendre.
N'utilisez pas cette convention, et lorsque votre collègue l'insiste, défiez-le de trouver quelque chose ( rien ) en ligne qui recommande cette pratique.