¿Es una mala práctica dar el mismo nombre a dos archivos muy diferentes con el mismo propósito general?

18

¿Es una mala práctica dar el mismo nombre a dos archivos muy diferentes con el mismo propósito general, separándolos en diferentes directorios?

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

Me gustaría mantener cortos los nombres de mis archivos, y ambos archivos tienen el mismo propósito general sin ser idénticos. No estoy seguro de si esto se consideraría una mala práctica en un entorno de programación profesional. Me gustaría saber cuál es la mejor práctica en esta situación.

Alternativamente, a expensas de la corta longitud del nombre, podría usar:

<script src="client_scripts/app/player_stats/player_stats_generator.js"></script>
<script src="client_scripts/app/coach_settings/coach_settings_generator.js"></script>
CuriousWebDeveloper
fuente
77
Nombres más largos! :)
marko
2
statsgen.js,settingsgen.js
Kroltan
1
¡SECO! (es decir, nombres más cortos)
Paul Draper
1
Código limpio (es decir, nombres significativos más largos)
Songo

Respuestas:

36

Considere la relación costo / beneficio de sus dos opciones:

  1. ¿Reutilizar el mismo nombre causaría confusión o conflictos de nombres? Probablemente no, ya que están en diferentes carpetas. El nombre "player_stats / generator.js" es equivalente a "player_stats_generator.js". Sin embargo, si ve, en el futuro, una razón para fusionar sus archivos js en un solo directorio (¿implementación? No lo sé), entonces este debería ser un buen indicador para dar nombres únicos.

  2. ¿Usar los nombres más largos implicaría una gran cantidad de tipeo extraño? Probablemente no. No solo muchos IDE de JS completan automáticamente los nombres de archivo en el proyecto para usted, sino que también es un código que probablemente solo se escribe, como máximo , una vez por archivo. El código que se escribe mucho son las clases y funciones dentro de los archivos js, y esas (con suerte) no entran en conflicto.

  3. Al depurar, ¿qué tipo de información obtiene sobre un error? Si el informe de error más común es "Error en la línea 34 de <filename.js>", considere darles nombres únicos, ya que recibir errores en solo generator.js y luego tratar de adivinar, a través del contexto, qué generador fue puede ser una molestia.

Avner Shahar-Kashtan
fuente
55
Depuración de js generalmente imprime la ruta completa del archivo.
Bergi
1
@Bergi Eso depende del navegador (y la versión), el IDE (si corresponde), el marco de registro de errores, etc.
Avner Shahar-Kashtan
22

Como cuestión práctica, si su IDE muestra nombres de archivo en pestañas, si usa el mismo nombre para cada archivo, terminará con pestañas que muestran el mismo nombre. Eso puede ser muy molesto. Un proyecto que me hice cargo de mantener tiene ese problema, y ​​es un gran problema tener 15 pestañas abiertas, la mitad de ellas con el mismo nombre de archivo.

Entonces ... usa nombres más descriptivos.

Gran maestro B
fuente
1
La mayoría de los editores de texto modernos mostrarán la ruta en la pestaña si los archivos tienen el mismo nombre.
kmiyashiro
Por supuesto, a veces es necesario que varios archivos tengan el mismo nombre [por ejemplo, en muchos servidores, index.html]. Me molestan los programas que dificultan determinar la ruta asociada a un archivo en particular.
supercat
1
@kmiyashiro: probablemente sea así, pero si tiene muchos archivos abiertos, las pestañas podrían reducirse en tamaño (ancho) hasta el punto en el que solo se ven los nombres de los archivos. Luego, siempre debe pasar el mouse sobre cada pestaña y esperar a que la "información sobre herramientas" muestre la ruta / archivo completo. Si solo tiene unos pocos archivos abiertos, y solo el caso raro de un nombre duplicado, probablemente sea aceptable. Pero con muchos archivos, puede ser muy molesto.
Kevin Fegan
1
Si tiene tantas pestañas abiertas, todas con el mismo nombre, cambiaría al archivo usando un comando de teclado en lugar de tratar de encontrarlo entre un mar de pestañas, incluso con nombres únicos.
kmiyashiro
1
Sin embargo, usar nombres más descriptivos puede ser bastante molesto ... cuando puedes some_super_long_descriptor_that_needs_more_description.jsdiferenciarlosome_super_long_descriptor_that_needs_more_cowbell.js
corsiKa
12

Aquí hay un claro factor decisivo: SECO (no se repita).

Cada nombre de archivo no tiene que ser diferente; para eso están los caminos . ¿Te imaginas cuántos archivos de sistema o programa diferentes hay en tu computadora? ¿Qué pasaría si cada uno de ellos tuviera un nombre único? En algún momento, solo estamos haciendo que el nombre del archivo sea una copia de la ruta.

Si la mejor descripción de un archivo Javascript en el contexto de client_scripts > app > player_statsrealmente es generator, su ruta debería ser client_scripts/app/player_stats/generator.js.

Esta pregunta se encuentra en programmers.stackexchange.com/questions/ 250481 . También hay serverfault.com/questions/ 250481 . 250481es una cosa en el contexto de las preguntas de los Programadores, y otra cosa en el contexto de las preguntas de Falla del servidor.

Las rutas (o URL) son buenas porque son identificadores anidados. Vamos a usarlos de esa manera :)

Paul Draper
fuente
7

Siempre use nombres descriptivos sobre nombres cortos a menos que sea algo así como una constante matemática o una variable de bucle donde las convenciones del lenguaje en cuestión favorecen los nombres cortos. Por ejemplo, si llama a una variable "pi" y hace que sea un valor apropiadamente preciso de pi, entonces el nombre es bueno y transmite el punto. Por otro lado, si tiene un generador que genera términos de la serie Taylor para Pi y los agrega para aproximar pi, desea llamarlo algo así como "taylorPiGenerator o similar".

Los buenos nombres ahora ahorran tiempo de refactorización más tarde o incluso peores errores masivos más tarde.

Los libros Clean Code y Code Complete entran en detalles considerables como los por qué y para los buenos nombres, pero de ninguna manera son las únicas fuentes.

Ingeniero mundial
fuente
Esta respuesta parece aplicarse bien a este ejemplo en particular, pero no aborda la pregunta general.
Paul Draper
3

Depende de la tecnología con la que esté trabajando. Los nombres deben identificar elementos, y las rutas deben identificar el contexto. Estoy de acuerdo en que nombrar bien es importante, pero bueno, las rutas también son nombres. Pero desde el punto de vista práctico, si está utilizando algo como Javascript , probablemente sea mejor mantener nombres más precisos para los elementos finales. Si está trabajando con herramientas que toman esto en consideración, como Python , la forma recomendada sería usar el mismo nombre con una ruta diferente (módulo, espacio de nombres). Si nos fijamos en Java, también encontrarás clases con el mismo nombre y diferentes paquetes. Uno podría ir un paso más allá y decir que los métodos son acciones con nombre en el contexto de la clase, y tenemos métodos con el mismo nombre en diferentes clases, que a su vez pueden llamarse iguales pero ubicarse en diferentes paquetes. El zen de Python dice:

Los espacios de nombres son una gran idea, ¡hagamos más de eso!

Pero JavaScript tiene peculiaridades y ventajas, por lo que le recomendaría que vaya con diferentes nombres (incluso si los archivos están en diferentes rutas). También puede buscar el patrón de módulo en javascript que podría ayudarlo a escribir un código más limpio:

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

Podrías tener tu pastel y comértelo también.

edin-m
fuente