2010-05-07 11 views
0

J'ai un tas de constantes connexes qui ne sont pas identiques. Quelle est la meilleure façon de les nommer?Est-ce kEatSpeed ​​ou kSpeedEat?

chemin # 1

 
kWalkSpeed 
kRunSpeed 
kEatSpeed 
kDrinkSpeed 

Ou,

chemin # 2

 
kSpeedWalk 
kSpeedRun 
kSpeedEat 
kSpeedDrink 

Si nous évaluons ces basés sur

  • lisibilité
  • compréhensibilité
  • organisation
  • dans la liste des membres (autocomplete)
  • pas bug sujettes à des erreurs subtiles due à l'utilisation erronée nom de la variable

Je pense façon # 1 gagne la lisibilité, ils sont à égalité pour compréhensibilité, chemin # 2 victoires pour l'organisation dans la liste d'auto-complétion, et la manière # 1 gagne également pour ne pas être sujette aux bogues. Je ne suis pas sûr combien de fois cela arrive à d'autres, mais quand les noms de variables comme celui-ci deviennent longs, alors il est facile d'écrire kSpeedEatingWhenInAHurry quand vous vouliez vraiment dire kSpeedEatingWhenInHome, en particulier lorsque vous utilisez la saisie semi-automatique.

Des perspectives?

+0

Tant que nous parlons de la dénomination des variables, à quoi sert le 'k'? –

+0

C'est un 'k'onstant – bobobobo

Répondre

9

En ce qui concerne l'un ou l'autre, je ferai toujours l'option # 1. kSpeedWalk semble être un booléen, pas une valeur (par exemple, je marche vite ou je marche normalement).

+2

Exactement cela. Les premiers sont des noms, les seconds sont des verbes. Semble transmettre la mauvaise intention, pour moi. Boire de la vitesse, sur la maison! – tzaman

+1

La marche rapide est en fait un [sport olympique] (http://en.wikipedia.org/wiki/Speed_walking). Programmation de vitesse ... hélas, pas. –

+0

Absolument # 1. # 2 voyage ma capacité de «lecture rapide». –

1

Je préfère kSpeedWalk. C'est plus cohérent IMO. Vous référez à obj.x, obj.y. x.obj n'a aucun sens! Le terme le plus à gauche devrait être le groupe auquel correspondent tous les termes de droite.

Une autre option est kSpeed_walk, où les traits de soulignement agissent de manière similaire à la notation par points. Mais ce n'est pas une notation largement utilisée AFAIK, ce qui peut conduire à la confusion pour quiconque essaie d'utiliser/ajouter à votre code.

Mais vraiment, le plus important est de ne pas les mélanger.

4

Une façon que je l'ai manipulé dans le passé est de namespace les constantes, vous avez donc (bien sûr, en utilisant votre méthode préférée de la capitalisation):

Speed.walk 
Speed.run 
Speed.eat 
Speed.drink 

ou

Speed::walk 
Speed::run 
Speed::eat 
Speed::drink 

(Ou ceux qui pourraient être KSpeed ​​- Je ne suis pas sûr de ce que le k dans votre exemple est pour.)

+0

Le k est pour "konstant" –

1

Sont les variables basées sur le verbe, par exemple vous êtes en train de marcher, ou en décrivant une propriété de l'action que vous faites? Si vous parlez de la vitesse à laquelle vous marchez, c'est généralement WALKSPEED, WalkSpeed, walkSpeed ​​(qui correspond toujours à la langue de votre choix).Pour le nommer SpeedWalk dira au prochain programmeur anglophone qui passe en revue votre code que vous avez affaire à une sorte de simulation speed-walking, et eating competition.