J'ai vu des arguments pour et contre Systems Hungarian . Depuis quelques années, je travaille sur un projet hérité qui utilise ce système en nommant chaque variable, fonction avec un préfixe du type de variable, par exemple (strName, intAge, btnSubmit etc.) (je connais les préfixes hongrois d'origine des applications par le type de variable, pas le type). J'aimerais que mon prochain projet l'abandonne complètement, mais j'ai du mal à nommer des choses similaires sans y avoir recours.
Disons que j'ai un formulaire Web pour collecter les adresses e-mail et les stocker dans une table de base de données, et un bouton qui appelle la fonction qui enregistre l'adresse dans la base de données.
Si j'utilise la notation de style hongrois, je pourrais appeler la case txtEmail
le bouton btnEmail
et la valeur contenue dans la zone de texte strEmail
. Je pourrais alors utiliser une fonction storeEmail(strEmail)
pour stocker l'e-mail. J'ai une convention claire ici, il est évident quelle est chaque variable.
Quelle serait la meilleure pratique pour nommer ces variables
- sans avoir recours aux systèmes hongrois,
- sans les rendre trop longs ou déroutants
- et avec une convention claire à utiliser sur l'ensemble de mon projet?
Réponses:
Votre dernier point est le plus important - quoi que vous fassiez, vous devez être cohérent dans votre projet et avec vos collègues. Il y a deux manières principales de réaliser la cohérence et si possible vous devriez utiliser les deux. Utilisez d'abord un outil pour vérifier les conventions de dénomination au moment de la construction. Dans le monde .Net, StyleCop serait un bon exemple d'un tel outil. La deuxième façon d'obtenir de la cohérence est d'avoir des revues par les pairs de tout le code, afin que vous puissiez tous garder un œil.
Vos deux autres points semblent demander une alternative. Je ne suis pas sûr que vous ayez besoin d'une alternative; le point sur le hongrois qui n'est plus populaire est qu'il était utilisé pour décrire le type lorsque le système de type et les outils étaient un peu, disons, moins stricts. C'est-à-dire si vous programmiez en C et passiez des pointeurs autour de la seule façon de garder une trace du type était d'utiliser le hongrois. Maintenant, si vous utilisez un langage comme C # ou Java, vous n'utiliserez pas de pointeurs (ou très rarement), donc le besoin de tout type de hongrois disparaît. De plus, les IDE modernes vous permettent de voir le type très facilement en survolant la variable ou au pire en utilisant un raccourci pour voir la déclaration d'origine. Donc, je ne pense pas que vous ayez besoin d'une sorte de notation, il suffit de nommer la variable par ce qu'elle fait. S'il s'agit d'une adresse e-mail, utilisez simplement "e-mail" ou "
la source
Lorsque vous traitez des formulaires Web / Windows ou d'autres éléments graphiques, il est judicieux d'utiliser les systèmes hongrois car vous pouvez avoir des contrôles qui sont très étroitement liés, par exemple, une zone de texte et une étiquette qui vont ensemble; vous pourriez les nommer
txtEmail
etlblEmail
les distinguer. D'après mon expérience, cela est courant et est en fait utile.Mais dans votre code-behind, ce type de dénomination n'est pas nécessaire. Si vous avez une variable de type
string
utilisée pour stocker un e-mail, nommez-la simplementemail
. Si, pour une raison quelconque, vous vous trompez, la plupart des IDE devraient vous permettre de survoler et de voir son type. (Idéalement, dans les trucs OO, cela pourrait être un attribut d'un objet, etuser.Email
c'est encore plus clair.)Je pense que si vous avez plus d'un objet déclaré dans votre code qui n'est pas un contrôle GUI qui pourrait être correctement nommé
email
, quelque chose est intrinsèquement incorrect avec votre conception.la source
Qu'est-ce qui rend une variable "trop longue"?
Au lieu de
txtEmail
,btnEmail
vous pouvez utiliserUserEmailText
,UserEmailButton
etAdminEmailText
,AdminEmailButton
Le problème avec cela est que vous pourriez commencer à sentir que la variable commence à devenir longue:
AdminEmailIsValid
commence à délimiter la durée pendant laquelle j'autoriserais la variable.En outre, vous pouvez commencer à remarquer que vous réutilisez un ensemble de variables et un ensemble d'opérations sur ces variables. C'est pour cela que la POO est conçue . Au lieu d'un ensemble de variables, créez un objet générique:
Ensuite, vous pouvez instancier une nouvelle variable en tant que classe et utiliser la même notation par points pour accéder à vos données:
Bien sûr, cela cible les langages qui utilisent le paradigme OOP, mais la majorité des langages de développement Web populaires sont orientés objet ou autorisent le code orienté objet (PHP, Python, C #, C ++, Java, JavaScript, ActionScript, etc. ).
la source
UserEmailText
etAdminEmailText
spécifiquement). J'ai généralement des types de suffixe car il se prête à passer à une classeUserEmailText
->UserEmail.text
->User.email.text
selon la quantité d'abstraction / fonctionnalité nécessaire.