En C #, suis-je encouragé à utiliser le mot clé polyvalent var pour chaque déclaration de variable? Si oui, dois-je mentionner ces caractères spéciaux pour les valeurs littérales dans la déclaration de variable, comme le M pour décimal dans l'instruction suivante:
var myDecimal = 14.5M;
Si cela fait une différence, j'essaie de faire du développement Web avec C #.
c#
variables
data-types
Wassimans
la source
la source
auto
.Réponses:
Il y a eu beaucoup de controverse sur l'utilisation de var. Mes règles générales sont les suivantes.
Fondamentalement, l'objectif est de faciliter la lecture du code. Si vous estimez que var suffit car l’affectation est évidente, utilisez var. Utilisez le nom de type complet comme indice pour le lecteur lorsque vous le jugez nécessaire.
la source
foreach
instructions où je me soucie uniquement d'énumérer une collection, pas nécessairement du type de chaque élément.Quand utiliser
var
est une programmation "guerre sainte". Il y a précisément un endroit où cela est requis: lorsque le résultat d'une opération crée un type anonyme, tel que:Partout ailleurs, il est facultatif et vraiment conforme à votre norme de codage de l’utiliser ou non dans les autres situations.
Et oui, vous aurez besoin des caractères spéciaux pour les littéraux pour que le compilateur sache ce que c'est du côté droit. Dans votre exemple, sans le
M
, la valeur par défaut estdouble
plutôt quedecimal
.la source
À partir de MSDN :
Je n'aime vraiment pas vraiment la dactylographie implicite. En apparence, il a tendance à rendre le code plus lisible, mais peut entraîner de nombreux problèmes par la suite. Si un dev change un initialiseur de variable, disons de
à
ou
Le type changera, entraînant toute une série d’erreurs de compilation ou, s’il s’agit d’une vue Web et que vous n’utilisez pas l’étape de post-génération pour précompiler vos vues, toute une série d’erreurs d’exécution qui ne seront pas détectées sans un traitement efficace. tests de pré-déploiement.
Le typage implicite ne fonctionne pas non plus partout (à partir du même lien MSDN)
Garder votre code cohérent (dans ce cas, utiliser du texte explicite partout) est une très, très bonne chose. À mon avis,
var
est paresseux et ne procure aucun avantage réel et introduit un autre point d'échec potentiel dans un processus déjà complexe.Mise à jour 2017
J'ai complètement changé d'avis. Lorsque je travaille en C #, j'utilise la
var
plupart du temps (à l'exception de choses comme les variables de type interface, etc.). Cela maintient le code concis, ce qui améliore la lisibilité. Restez cependant attentif à ce que le type résolu est vraiment.la source
this.
partout, ou direSystem.Blah.SomeType
au lieu d'unusing
, que je trouve toujours incroyablement ennuyeux, un code plus concis est - du moins pour moi - généralement plus facile à analyser visuellement. Il existe encore de nombreux scénarios dans lesquels le typage explicite est le bon choix. Mais, de nos jours, je suis moins un juriste spécialiste des langues que quelqu'un qui essaie simplement de mettre de l'ordre dans le code.using namespace std;
dans les fichiers .cpp. (Pas les en-têtes, car je préférerais éviter d'être goudronné et mis en drapeau.)La référence C # montre ce qui suit pour illustrer une bonne ou une mauvaise utilisation de cette construction:
L'exemple suivant montre deux expressions de requête. Dans la première expression, l'utilisation de var est autorisée mais n'est pas obligatoire, car le type du résultat de la requête peut être indiqué explicitement sous la forme IEnumerable. Cependant, dans la deuxième expression, var doit être utilisé car le résultat est une collection de types anonymes et le nom de ce type n'est accessible que par le compilateur lui-même. Notez que dans l'exemple n ° 2, l'élément de variable d'itération foreach doit également être implicitement typé.
la source
Le mot clé var demande uniquement au compilateur de déduire automatiquement le type de la variable de type var. Par conséquent, si vous souhaitez stocker une variable de type décimal dans une variable var, vous devez utiliser m. De même, si vous stockez une chaîne, vous devez la placer entre guillemets.
la source
Pour moi, je n'utilise pas var dans les cas suivants:
Fruit foo = new Apple();
. Dans ce cas, je pense que var est d'éviter et utiliser la classe parente (ici Fruit) est préférable en permettant une meilleure compréhension de la logique du code et la limitation des bogues probables (Avec var, aucune vérification du concept polymorphe!)Pour le reste, je pense que cela dépend du cas et du fond du développeur. Certaines personnes du monde PHP préféreront ne pas s'occuper des types variables, et certaines personnes du monde Java vont simplement penser que var est une hérésie et plus elle est verbeuse, mieux c'est.
Vous devrez faire votre opinion personnelle :)
la source