Procédure stockée Conventions de dénomination? [fermé]


11

Un de nos développeurs seniors a déclaré que nous devrions utiliser une convention de dénomination pour les procédures stockées avec un style de dénomination "objectVerb" tel que ("MemberGetById") au lieu d'un type de dénomination "verbObject" ("GetMemberByID"). Le raisonnement de cette norme est que toutes les procédures stockées associées seraient regroupées par objet plutôt que par action.

Alors que je vois la logique de cette façon de nommer les choses, c'est la première fois que je vois des procédures stockées nommées de cette façon. Mon opinion sur la convention de dénomination est que le nom ne peut pas être lu naturellement et prend un certain temps pour déterminer ce que les mots disent et ce que la procédure pourrait faire.

Que pensez-vous de cela? Quelle est la façon la plus courante de nommer un proc stocké, et quels types de conventions de nommage de proc stockés avez-vous utilisés ou avez-vous utilisés?


1
"le nom ne se lit pas naturellement"? Par qui? Quelle est votre première langue naturelle? Anglais? Ou autre chose?
S.Lott

9
@ S.Lott - pour moi, cela ressemble à quelque chose que vous entendriez dans un marais à Degobah.
TZHX

1
Grande question! Avoir certaines normes est mieux que de ne pas avoir de normes, mais certaines personnes capables ont poussé ce concept encore plus loin et ont trouvé une bonne norme. Par exemple, Dijkstra a expliqué pourquoi il est tellement plus logique d'indexer des tableaux avec un 0 comme premier élément plutôt que 1. developeronline.blogspot.com/2008/04/… C'est un sujet apparemment trivial, et pourtant je parie il lui a fallu quelques bricolages pour le proposer. De même, Spolsky a un bon système: joelonsoftware.com/articles/Wrong.html Une réflexion en amont évite la douleur
Job

4
Je dirais de se débarrasser des procédures stockées ensemble;)
Michael Brown

Réponses:


10

Regarde ca comme ca. Comment vos méthodes sont-elles organisées en code? Par objet, avec les méthodes suspendues.

MyObject.GetById(int)
MyObject.Save()

En ayant vos procs stockés imitant cette dénomination, il sera beaucoup plus facile de voir comment ils se rapportent à votre code source.

MyObjectGetById
MyObjectSave

Bon point, mais SQL n'est pas intrinsèquement OO. En fait, il est TRÈS différent de Java / C # / etc. code qui s'interface avec lui. Il est naturel de laisser SQL faire son travail et de laisser Java faire son travail. Si le code doit être généré, il peut être accompli avec peu d'effort.
Job

4
Je ne pense pas que OO soit une considération ici. Ce qui précède est juste un exemple de la façon dont ce n'est pas aussi artificiel qu'il peut d'abord sembler utiliser une telle convention de dénomination.
Mark Freedman,

2
Si en ayant une méthode dans le code être "MyObject.GetById (int)" pourquoi un proc stocké ne pourrait-il pas aussi être appelé "MyObject.GetById"? Le regroupement se produirait toujours et un point donnerait la séparation entre l'objet / la table et l'action souhaitée.
Chris

1
@Chris, je ne suis pas sûr que vous puissiez utiliser un '.' dans un nom de proc, mais certainement en utilisant les groupes objectVerb chose de la même manière que l'on pense à eux. Je ne pense pas à passer en premier, je pense à ce que je veux, puis comment le récupérer.
CaffGeek

1
@Mark Freedman, non pas que ce soit nécessairement OO, vous groupez les choses dans les langages procéduraux de la même manière, seulement elles ne sont pas dans des objets réels. Mais généralement précédé de ce qui deviendrait naturellement un objet si le code était converti. strCompare, strLen, etc, etc, objectAction
CaffGeek

6

Moi aussi, je peux voir la logique; il regroupe les actions par entité. Cependant, si vos actions sont toujours GET, PUT et DELETE, le changement de nom pourrait ne pas avoir beaucoup d'importance. Je vois le meilleur avantage de la nouvelle norme de dénomination lorsque vous avez des noms d'action uniques, par exemple "AccountTransferMoney", ce genre de chose.

La chose la plus importante est qu'il existe une seule norme et qu'elle est suivie par tout le monde.


1
Issu d'une entreprise qui n'avait pas de normes de nommage officielles (autre que "préfixe avec sp"), avoir une norme est la seule chose qui compte.
Glen Solsberry,

5

Vous devez décider quel est le plus gros émetteur, trouver les procs que vous recherchez ou déchiffrer rapidement leur signification?

Si tu vois:

memberGetID memberGetName memberGetThis memberListSomething memberDelete

À un moment donné, une fois que vous avez déjà trouvé «membre», vous l'ignorez simplement et partez de là.

Regardez dans un annuaire. Si vous voulez trouver John Smith, c'est Smith, Dave Smith, John Smith, Robert

vraiment si dur? Je n'appelle pas les gens par leur nom et leur prénom, sauf si c'est James Bond.


1
+1 J'adore cette question et les réponses! Il traite de l'utilisabilité, et cela peut devenir assez délicat et intéressant.
Job

0

Au lieu de "objectVerb", vous pouvez utiliser "namespace_verbObject", comme Member_GetById.
Il regroupera les procédures par espace de noms et utilisera toujours la dénomination traditionnelle "verbSomething".

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.