Est-ce une mauvaise pratique de donner le même nom à deux fichiers très différents ayant le même usage général?


18

Est-ce une mauvaise pratique de donner deux fichiers très différents avec le même objectif général du même nom, en les séparant dans des répertoires différents?

<script src="client_scripts/app/player_stats/generator.js"></script>
<script src="client_scripts/app/coach_settings/generator.js"></script>

Je voudrais garder mes noms de fichiers courts, et les deux fichiers ont le même usage général sans être identiques. Je ne sais pas si cela serait considéré ou non comme une mauvaise pratique dans un environnement de programmation professionnel. J'aimerais savoir quelle est la meilleure pratique dans cette situation.

Alternativement, au détriment de la courte longueur du nom, je pourrais utiliser:

<script src="client_scripts/app/player_stats/player_stats_generator.js"></script>
<script src="client_scripts/app/coach_settings/coach_settings_generator.js"></script>

7
Des noms plus longs! :)
marko

2
statsgen.js,settingsgen.js
Kroltan

1
SEC! (c'est-à-dire des noms plus courts)
Paul Draper

1
Code propre (c.-à-d. Noms plus longs et significatifs)
Songo

Réponses:


36

Tenez compte du rapport coûts / avantages de vos deux options:

  1. La réutilisation du même nom entraînerait-elle de la confusion ou des conflits de dénomination? Probablement pas, car ils se trouvent dans des dossiers différents. Le nom « player_stats / generator.js » équivaut à « player_stats_generator.js ». Cependant, si vous voyez, à l'avenir, une raison de fusionner vos fichiers js dans un seul répertoire (déploiement? Je ne sais pas), alors cela devrait être un bon indicateur pour donner des noms uniques.

  2. L'utilisation de noms plus longs impliquerait-elle beaucoup de saisie étrangère? Probablement pas. Non seulement de nombreux noms de fichiers de saisie semi-automatique JS IDE sont-ils dans le projet pour vous, c'est aussi un morceau de code qui n'est probablement écrit - au plus - qu'une fois par fichier. Le code qui est tapé beaucoup sont les classes et fonctions à l' intérieur des fichiers js, et ceux (je l' espère) ne sont pas en conflit.

  3. Lors du débogage, quel type d'informations obtenez-vous sur une erreur? Si le rapport de bogue le plus courant est "Erreur à la ligne 34 de <filename.js>", envisagez de leur donner des noms uniques, car recevoir des erreurs dans simplement generator.js et essayer de deviner, à travers le contexte, de quel générateur il s'agit peut être un problème.


5
Le débogage de js imprime généralement le chemin complet du fichier.
Bergi

1
@Bergi Cela dépend du navigateur (et de la version), de l'IDE (le cas échéant), du cadre de consignation des erreurs, etc.
Avner Shahar-Kashtan

22

De manière pratique, si votre IDE affiche les noms de fichiers dans des onglets, si vous utilisez le même nom pour chaque fichier, vous vous retrouverez avec des onglets qui affichent tous le même nom. Cela peut être très ennuyeux. Un projet que j'ai repris en charge a ce problème, et c'est une douleur majeure d'avoir 15 onglets ouverts, la moitié d'entre eux avec le même nom de fichier.

Alors ... utilisez des noms plus descriptifs.


1
La plupart des éditeurs de texte modernes afficheront le chemin dans l'onglet si les fichiers ont le même nom.
kmiyashiro

Bien sûr, il est parfois nécessaire que plusieurs fichiers aient le même nom [par exemple sur de nombreux serveurs, index.html]. Je suis ennuyé par les programmes qui rendent difficile la détermination du chemin d'accès associé à un fichier particulier.
supercat

1
@kmiyashiro - probablement, mais si vous avez beaucoup de fichiers ouverts, la taille (largeur) des onglets pourrait être réduite au point où vous ne voyez généralement que les noms de fichiers. Ensuite, vous devez toujours passer votre souris sur chaque onglet et attendre la "info-bulle" pour afficher le chemin / fichier complet. Si vous n'avez que quelques fichiers ouverts et que le cas rare d'un nom dupliqué, c'est probablement acceptable. Mais avec beaucoup de fichiers, cela peut être très ennuyeux.
Kevin Fegan

1
Si vous avez autant d'onglets ouverts tous avec le même nom, je passerais au fichier en utilisant un raccourci clavier au lieu d'essayer de le trouver parmi une mer d'onglets même avec des noms uniques.
kmiyashiro

1
Utiliser des noms plus descriptifs peut être plutôt ennuyeux cependant ... quand vous arrivez some_super_long_descriptor_that_needs_more_description.jsà le différencier desome_super_long_descriptor_that_needs_more_cowbell.js
corsiKa

12

Il y a un facteur décisif clair ici: SEC (ne vous répétez pas).

Chaque nom de fichier ne doit pas être différent; c'est ce que les chemins sont pour . Pouvez-vous imaginer combien de fichiers système ou programme différents se trouvent sur votre ordinateur? Et si chacun d'entre eux devait avoir un nom unique? À un moment donné, nous faisons simplement du nom de fichier une copie du chemin.

Si la meilleure description d'un fichier Javascript dans le contexte de l' client_scripts > app > player_statsest vraiment generator, son chemin devrait l'être client_scripts/app/player_stats/generator.js.

Cette question se trouve sur programmers.stackexchange.com/questions/ 250481 . Il y a également serverfault.com/questions/ 250481 . 250481c'est une chose dans le contexte des questions des programmeurs, et quelque chose d'autre dans le contexte des questions de panne de serveur.

Les chemins (ou URL) sont agréables car ce sont des identifiants imbriqués. Utilisons-les de cette façon :)


7

Utilisez toujours des noms descriptifs plutôt que des noms courts, à moins que ce ne soit quelque chose comme une constante mathématique ou une variable de boucle où les conventions du langage en question favorisent les noms courts. Par exemple, si vous appelez une variable "pi" et que ce soit une valeur précise de pi appropriée, alors le nom est bon et fait passer le point. D'un autre côté, si vous avez un générateur qui génère des termes de la série Taylor pour Pi et les additionne pour approximer pi, vous voulez l'appeler quelque chose comme "taylorPiGenerator ou similaire.

Les bons noms font désormais gagner du temps au refactor plus tard ou, pire encore, des erreurs massives plus tard.

Les livres Clean Code et Code Complete entrent dans les moindres détails comme le pourquoi et le comment d'une bonne appellation, mais ils ne sont en aucun cas les seules sources.


Cette réponse semble bien s'appliquer à cet exemple particulier, mais elle ne répond pas à la question générale.
Paul Draper

3

Cela dépend de la technologie avec laquelle vous travaillez. Les noms doivent identifier les éléments et les chemins doivent identifier le contexte. Je suis d'accord qu'une bonne dénomination est importante mais bon, les chemins sont aussi des noms. Mais d'un point de vue pratique, si vous utilisez quelque chose comme Javascript, il est probablement préférable de conserver des noms plus précis pour les produits finis. Si vous travaillez avec des outils qui prennent cela en considération, comme Python , la méthode recommandée serait d'utiliser le même nom avec un chemin différent (module, espace de noms). Si vous regardez Java, vous trouverez également des classes du même nom et des packages différents. On pourrait aller plus loin et dire que les méthodes sont nommées actions dans le contexte d'une classe, et nous avons des méthodes nommées de la même manière dans différentes classes, qui elles-mêmes peuvent être nommées de la même façon mais placées dans des packages différents. Le Zen de Python dit:

Espaces de noms sont un klaxonnent grande idée - faisons plus de ceux-là!

Mais javascript a ses bizarreries et ses avantages, je vous recommande donc de choisir des noms différents (même si les fichiers sont dans des chemins différents). Vous pouvez également rechercher le modèle de module en javascript qui pourrait vous aider à écrire du code plus propre:

    var playerStatsGenerator = player_stats.Generator();
    var coachSettingsGenerator = coach_settings.Generator();

Vous pourriez avoir votre gâteau et le manger aussi.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.