6
votes

Terminologie créative

Je semble utiliser des mots fades tels que nœud , propriété , enfants (etc) trop souvent, et je crains que quelqu'un d'autre avoir du mal à comprendre mon code simplement parce que les noms des pièces sont vagues, mots courants.

Comment trouvez-vous des noms créatifs pour les classes et les composants pour les rendre plus mémorables?

J'ai particulièrement des problèmes avec des outils génériques qui n'ont aucune description réelle, à l'exception de leur objectif fonctionnel assez générique. J'aimerais savoir si d'autres ont trouvé des moyens créatifs de nommer des choses plutôt que de simplement les nommer par leur utilité, telles que anonymoscunckwrappercallerexecutivefactory . .


1 commentaires

N'oubliez pas l'interface pour cela, ianonymousfonctionwrappercallerexecutory


8 Réponses :


4
votes

Il est difficile de répondre. Je les trouve juste parce qu'ils semblent "s'adapter".

Ce que je sais, cependant, c'est que je trouve qu'il est essentiellement impossible de passer à un code d'écriture à moins que quelque chose ne soit nommé correctement, et il se sent bien. Si ce n'est pas nommé droit, je trouve du mal à utiliser et le code est généralement déroutant.

Je ne suis pas trop préoccupé par quelque chose d'être "mémorable", seulement "précis".

On m'a connu de m'associer à penser à voix haute sur ce qu'il faut nommer quelque chose. Prenez votre temps et assurez-vous que vous êtes vraiment satisfait du nom. N'ayez pas peur d'utiliser des mots communs / simples.


1 commentaires

Je suis d'accord et je vais aller plus loin pour dire que les noms fades sont vraiment une bonne chose car ils sont susceptibles de sauver rapidement leur but. Les noms créatifs doivent être conservés pour des personnages dans les romans criminels. Les noms simples, succincts et significatifs sont pour le code.



3
votes

L'utilisation de «métaphores» est un thème commun dans la littérature agile (et modèle).

«enfants» (dans votre question) est un exemple de métaphore qui est largement utilisé et pour de bonnes raisons.

Donc, j'encouragerais l'utilisation de métaphores, à condition qu'ils soient applicables et non un tronçon de l'imagination.

Les métaphores sont partout dans l'informatique. Des fichiers aux bugs aux pointeurs vers des flux ... Vous ne pouvez pas les éviter.


0 commentaires

1
votes

noms qui reflètent le but de la classe, la méthode ou la propriété sont plus mémorables que ceux créatifs. Les IDes modernes facilitent l'utilisation des noms plus longs, alors vous sentez des frais pour être descriptifs. Obtenir de la création ne va pas aider autant que de devenir précis.


0 commentaires

1
votes

Je recommande de choisir des noms à partir d'un domaine d'application spécifique. Par exemple. Si vous mettez des voitures dans un arbre, appelez la voiture de classe nœud - le fait que c'est aussi un nœud devrait être apparent de l'API. En outre, n'essayez pas d'être trop générique dans votre implémentation - ne mettez pas tous les attributs de la voiture dans une haquetable propriétés nommées, mais créez des attributs distincts pour la marque, la couleur, etc.


2 commentaires

Si seulement j'avais quelque chose comme des voitures descriptives à travailler. Je construis une structure de données d'arborescence générale qui pourrait être utilisée pour n'importe quoi. : -S


Si la structure des arbres est vraiment à effet général, pourquoi l'écrivez-vous - elle a sûrement été écrite plusieurs fois auparavant. S'il y a une raison de l'écrire, essayez de penser à quoi la raison est et mettez cela dans le nom.



2
votes

Je crois que, dans le but de la normalisation et de la communication, il est bon d'utiliser un vocabilier commun, comme dans le même cas pour les modèles de conception. J'ai un problème avec un programmeur qui conserve ses propres termes et j'ai du mal à le comprendre. (Il a continué à utiliser le terme «événements orchestrants» au lieu de «script» ou «processus FCFS». Bravo pour la créativité!)

Ce vocabulaire commun décrire des choses que nous sommes habitués. Un nœud est un point, quelque part dans un graphique, dans un arbre, ou quoi-face. Une façon est d'être spécifique au domaine. Si nous faisons un problème de cartographie, au lieu de «nœud», nous pouvons utiliser «emplacement». Cela aide dans un sens, du moins pour moi. Je trouve donc qu'il est nécessaire d'équilibrer de pouvoir communiquer avec d'autres programmeurs, tout en gardant suffisamment de descripteur spécifique pour m'aider à me souvenir de ce que cela fait.


0 commentaires

-1
votes

Beaucoup de langages et de styles de codage aiment utiliser toutes sortes de préfixes descriptifs. En PHP, il n'y a pas de types clairs, cela peut donc aider grandement. Au lieu de faire

$Kube->canEat($myShorts, $withKetchup);


4 commentaires

Des conseils horribles .. mais amusez-vous néanmoins :) J'ai créé une fois une minuscule application en utilisant uniquement des noms d'animaux pour les variables. 2 heures en écriture, j'étais tellement perdue. C'est un bon exercice pour comprendre la bonne nommée ..


Je cherche ce genre de créativité, mais d'une manière toujours significative.


Malheureusement, avec n'importe quel montant de créativité, vous m'éloignez d'être descriptif sur ce que le programme fait et ce que signifient les variables. Je pense que c'est le problème inhérent à la création de noms de variables créatifs. Comme Meeh a déclaré, et comme le poste est censé plaisanter, c'est que, comme les noms deviennent moins évidents et descriptifs, ils deviennent moins utilisables.


Peut-être devrions-nous utiliser des équivalents de langue étrangère. Cela pourrait nous aider à se rendre compte des efforts supplémentaires non-anglophones doivent utiliser lors de la programmation dans une langue avec des mots-clés anglais.



2
votes

Je pense que le nœud, les enfants et la propriété sont de grands noms. Je peux déjà deviner les suivantes sur vos cours, juste par leurs noms "fades":

  • Node - Cette classe fait partie d'un graphique d'objets
  • Enfants - Cette variable contient une liste de nœuds appartenant au noeud contenant.

    Je ne pense pas que le "nœud" est vague ou commun, et si vous codez une structure de données générique, il est probablement d'accord pour avoir des noms génériques! (Avec cet étant dit, si vous codez un arbre, vous pouvez utiliser quelque chose comme Treenode pour souligner que le nœud fait partie d'un arbre.) Une façon de faire la vie des développeurs qui utilisera votre API plus facile est de suivre les conventions de nommage de vos bibliothèques intégrées de votre plate-forme. Si tout le monde appelle un nœud un nœud, et un itérateur un itérateur, cela rend la vie facile.


0 commentaires

3
votes

Je n'ai pas vraiment de réponse, mais trois choses pour vous de penser.

  1. Le retard de Phil Karlton a déclaré que: "Il n'y a que deux problèmes d'informatique. Cache invalidation et nommer des choses." Donc, le fait que vous ayez du mal à trouver de bons noms est tout à fait normal et même attendu.
  2. OTOH, ayant du mal à nommer des choses peut aussi être un signe de mauvais design. (Et oui, je suis parfaitement conscient, que n ° 1 et n ° 2 se contredisse mutuellement. Ou peut-être qu'il faut y penser davantage à s'équilibrer.) Par exemple, si une chose a trop de responsabilités, il est assez impossible de venir avec un bon nom. (Témoin de tous les classes «Service», «Util», «Modèle» et «Manager» dans les conceptions de Bad Oo. Voici un exemple de code Google Recherche sur " ManagerFactoryFactory ".)
  3. En outre, vos noms devraient cartographier le jargon de domaine utilisé par des experts de la matière. Si vous ne trouvez pas un expert en matière de matière, c'est un signe que vous vous inquiétez actuellement du code que vous n'êtes pas censé m'inquiéter. (Fondamentalement, le code qui met en œuvre votre secteur d'activité principale doit être mis en œuvre et bien conçu, le code dans les domaines desiliaires doit être mis en œuvre et conçu ainsi, et tout autre code ne doit pas être mis en œuvre ou conçu du tout, mais acheté à partir d'un fournisseur, où Ce que vous achetez est leur domaine de base. [Veuillez interpréter "acheter" et "vendeur" libéralement. Le logiciel libre développé par la communauté est tout à fait.])

    Concernant N ° 3 ci-dessus, vous avez mentionné dans un autre commentaire sur lequel vous travaillez actuellement sur la mise en œuvre d'une structure de données d'arborescence. À moins que votre entreprise soit dans le secteur de la vente de structures de données d'arbres, cela ne fait pas partie de votre domaine principal. Et la raison pour laquelle vous avez du mal à trouver de bons noms pourrait être que vous travaillez en dehors de votre domaine principal. Maintenant, "Vendre des structures de données d'arbres" peut sembler stupide, mais il sont en réalité des entreprises qui font cela. Par exemple, l'équipe de la BCL à l'intérieur de la division Développeur de Microsoft: ils vendent réellement (bien, pour certaines définitions de «Vendre», de toute façon) les bibliothèques de base de base .NET Framework, notamment des structures de données d'arbres. Mais notez que, par exemple, l'équipe de compilateur C ++ de Microsoft (littéralement) achète leur stl d'un vendeur tiers - ils incitent que leur domaine principal rédige des compilateurs et quittent la rédaction de bibliothèques à une entreprise Qui considère l'écriture de STLS leur principal domaine. (Et en effet, Afaik, cette entreprise rien que écrit et vendez des implémentations stl. C'est leur seul produit.)

    Si, cependant, la vente de structures de données d'arborescence est votre domaine principal, les noms que vous avez répertoriés sont tout simplement bien. Ce sont les noms que les experts de la matière (programmeurs, dans ce cas) utilisent lorsque vous parlez du domaine des structures de données d'arbres.


0 commentaires