Je ne sais pas s'il s'agit d'un trait OCD ou non, mais je trouve que parfois je suis complètement bloqué, incapable de continuer ce que je fais lorsque je nomme une classe (ou une fonction, ou un espace de noms, etc.) que je crois être utilisée à l'extérieur d'un projet donné. Une API par exemple. Ou une bibliothèque de classes utilitaires.
Si le nom n'est pas exactement correct (dans mon esprit), je ne peux tout simplement pas continuer ... Je suis coincé à essayer de trouver le bon nom. J'ai essayé d'écrire de petites applications qui l'utiliseraient pour voir à quoi ressemblent les noms, mais cela ne semble pas aider ...
Je sais que cela ne devrait pas avoir d'importance, et c'est contre tout état d'esprit de programmation de supposer que vous l'auriez parfait au premier coup d'œil ... Je me sens simplement impuissant ...
Tous les conseils / idées seraient grandement appréciés ...
Réponses:
À mon avis, le problème que vous rencontrez n'est pas seulement de trouver une meilleure façon de trouver de bons noms, mais de faire face à la contrainte de le faire. Si je suis honnête, je reconnais un trait similaire en moi. Les noms sont importants, après tout, et j'aime bien les concepts sur lesquels je travaille. Cependant, ce n'est pas toujours la chose la plus importante.
Voici quelques-unes des méthodes que j'utilise pour surmonter ce genre de chose:
la source
d'abord
Posez-vous la question "quel est le seul but de cette classe?". Sans adhérer au principe de responsabilité unique, il est très difficile de nommer les classes et les méthodes. Si vous ne pouvez pas répondre à cette question, vous devrez peut-être repenser ce que vous voulez que la classe fasse et envisager de séparer les préoccupations. Il sera ainsi plus facile de nommer
Deuxièmement
Avez-vous un modèle pour nommer vos classes? Essayez peut-être d'examiner certains modèles de dénomination courants, par exemple le modèle, qui devient beaucoup plus facile à suivre une fois que vous avez abordé SRP ci-dessus. Votre classe analyse-t-elle XML? Essayez XMLParser. Analyse-t-il XML, crée-t-il des modèles de domaine pour représenter l'entrée, les conserve-t-il dans la base de données, puis publie-t-il un message de réussite sur Twitter? Essayez de refactoring.
Troisièmement
Je comprends d'où vous venez et avez déjà vécu une situation similaire. Essayez peut-être d'étoffer votre classe avec quelques fonctionnalités, avec un nom temporaire pour commencer. Avec n'importe quel bon IDE ou assistant de refactoring, renommer la classe devrait être une action en un clic, donc ce que vous nommez votre classe au départ n'a pas besoin d'être permanent! Cela vous aidera à surmonter votre bloc OCD et donnera à votre subconscient le temps de le traiter un peu plus loin.
Enfin et légèrement hors sujet
J'ai eu un moment d'ampoule dans un travail que je faisais l'autre jour, implémentant un système non critique, et je passais un bon moment à jouer avec différents noms de classes, etc. classes en fonction de leur exécution spécifique ... Par exemple, vous pourriez être tenté d'avoir IXMLParser et XMLParser, mais que se passe-t-il lorsque votre entrée passe à JSON? Essayez plutôt IInputParser, de cette façon, vous pouvez créer des classes concrètes XMLParser et JSONParser qui implémentent toutes deux IInputParser de différentes manières.
la source
Pour moi, c'est généralement un signe que le design n'est pas clair dans mon esprit, donc je me fais un nom, et je me donne un temps (disons 2 minutes) pour en trouver un meilleur, à la fin de ce temps, je dois utilisez celui que j'ai trouvé en premier. Barney, Wilma et Fred sont les favoris pour commencer. Je fais des choses comme "BarniesInputParser" Les noms sont si mauvais que je dois en trouver un meilleur ou les changer plus tard. Ils sont également si mauvais qu'ils sont uniques, ce qui rend la refactorisation triviale et sûre, et quiconque regarde le code incomplet peut voir instantanément qu'il est incomplet.
L'important est que pendant que vous n'ajoutez pas de fonctionnalité, vous ne donnez à votre cerveau aucune nouvelle information à utiliser pour définir le nom (et clarifier la conception). Tout ce que vous faites, c'est régurgiter la même entrée de différentes manières.
Ou allez faire un café. Avant d'arriver à la machine, vous l'avez ...
la source
Je l'ai reçu d'un ami il y a quelque temps. Écrivez ce que votre processus est censé faire. Juste un petit récit. Ensuite, prenez les noms et transformez-les en classes, les verbes en méthodes et les adverbes en propriétés.
la source