¿Cuál es el estándar de nomenclatura para los componentes de la ruta?

Resuelto Oddthinking asked hace 14 años • 9 respuestas

Sigo enredándome cuando manipulo rutas y nombres de archivos porque no sigo un estándar de nomenclatura para los componentes de las rutas.

Considere el siguiente problema de juguete (ejemplo de Windows, pero es de esperar que la respuesta sea independiente de la plataforma). Se le ha proporcionado la ruta de una carpeta:

C:\Users\OddThinking\Documents\My Source\

Desea recorrer las carpetas que se encuentran debajo y compilar todos los archivos .src en archivos .obj.

En algún momento estás viendo la siguiente ruta:

C:\Users\OddThinking\Documents\My Source\Widget\foo.src

¿Cómo nombrarías los siguientes componentes de la ruta?

A. foo
B. foo.src
C. src
D. .src
E. C:\Users\OddThinking\Documents\My Source\ (absolute path of the root)
F. Widget\foo.src (relative path of the file to absolute path of the root)
G. Widget\
H. C:\Users\OddThinking\Documents\My Source\Widget\
I. C:\Users\OddThinking\Documents\My Source\Widget\foo.src

Aquí está mi intento:

A. ¿Nombre base? ¿Nombre base?

B. ¿Nombre del archivo? ¿Nombre del archivo?
La diferencia es importante a la hora de elegir nombres de identificadores y nunca soy coherente en este aspecto.

C. ¿Extensión?

D. ¿Extensión? Espera, eso es lo que llamé C. ¿
Debo evitar almacenar el punto y simplemente colocarlo cuando sea necesario?
¿Qué pasa si no hay ningún punto en un archivo en particular?

E.?

F.?

G. ¿Carpeta? ¿Pero no es este un término específico de Windows?

H. ¿Nombre de la ruta? ¿Nombre de ruta? ¿Camino?

I. ¿Nombre del archivo? Espera, así es como llamé B. ¿
Nombre de ruta? Espera, así es como llamé H.

Oddthinking avatar Feb 10 '10 14:02 Oddthinking
Aceptado

Creo que su búsqueda de una convención de nomenclatura "estándar" será en vano. A continuación se presentan mis propuestas, basadas en programas existentes y conocidos.


A) C:\users\OddThinking\Documents\My Source\Widget\foo.src
                                                   ---

Vim lo llama raíz de archivo (: ayuda modificadores de nombre de archivo)


B) C:\users\OddThinking\Documents\My Source\Widget\foo.src
                                                   -------

nombre de archivo o nombre base


C) C:\users\OddThinking\Documents\My Source\Widget\foo.src
                                                       ___ (without dot)

extensión de archivo/nombre


D) C:\users\OddThinking\Documents\My Source\Widget\foo.src
                                                      ____ (with dot)

también extensión de archivo . Simplemente almacene sin el punto, si no hay ningún punto en un archivo, no tiene extensión


E) C:\users\OddThinking\Documents\My Source\Widget\foo.src
   -----------------------------------------

parte superior del árbol
Sin convención, git lo llama directorio base


F) C:\users\OddThinking\Documents\My Source\Widget\foo.src
                                            --------------

camino desde la cima del árbol hasta la hoja
camino relativo


G) C:\users\OddThinking\Documents\My Source\Widget\foo.src
                                            ------

un nodo del árbol
sin convención, tal vez un directorio simple


H) C:\users\OddThinking\Documents\My Source\Widget\foo.src
   ------------------------------------------------

nombre del directorio


I) C:\users\OddThinking\Documents\My Source\Widget\foo.src
   -------------------------------------------------------

camino completo/absoluto

blinry avatar Feb 10 '2010 09:02 blinry

Buena pregunta primero que nada, mi +1. Esto me molestó cuando tuve que crear una serie de funciones en la clase Utilidad una vez. Obtener nombre de archivo? o ObtenerNombreCompleto? ¿GetApplicationPath significa ruta completa o el nombre del directorio? etcétera. Vengo de .NET, así que creo que puedo agregar poco más a la excelente respuesta de @blinry.

Resumen: (En cursiva es lo que no usaría como programador)

  1. Ruta : La ruta especifica una ubicación única en el sistema de archivos (a menos que sea una ruta relativa). El nombre de la ruta se usa con menos frecuencia, pero yo me quedaría con la ruta: explica bastante bien qué es. La ruta puede apuntar a un archivo o una carpeta o incluso a nada (C:\). El camino puede ser:

    1. Ruta relativa : My Source\Widget\es una ruta relativa y también Widget\foo.src. Autoexplicativo.
    2. Ruta Absoluta o Ruta Completa : Es la ruta totalmente calificada que apunta al objetivo. Tiendo a utilizar este último con más frecuencia. C:\users\OddThinking\Documents\My Source\Widget\foo.srces por tanto camino completo. Vea al final lo que yo llamo ruta completa que apunta a un archivo y que termina en un directorio.

    La página wiki y el nombre .NET para la ruta son consistentes.

  2. Ruta raíz o directorio raíz : la primera es la convención .NET, mientras que la segunda se escucha más en los círculos de UNIX. Aunque me gustan ambos, tiendo a usar más el primero. En Windows, a diferencia de UNIX, tiene muchas rutas raíz diferentes, una para cada partición. Los sistemas Unix tienen un directorio raíz que contiene información sobre otros directorios y archivos. P.ej. C:\es la ruta raíz.

  3. Carpeta o Nombre de carpeta : Widget, OddThinkingetc en su caso. Esta podría ser una convención exclusiva de Windows (de hecho, es mi forma de pensar extraña :)), sin embargo, me opongo firmemente a la respuesta "Directorio" de Blinry. Aunque para un usuario normal directorio significa lo mismo que una carpeta (como subcarpetas, subdirectorios), creo que desde un ángulo técnico "directorio" debería sonar como una dirección calificada para el objetivo y no como el objetivo en sí. Más abajo.

    1. Subcarpetas : Con respecto a users OddThinkingy Documentsson subcarpetas.
    2. Subdirectorios : Con respecto a users OddThinking\, OddThinking\Documents\y OddThinking\Documents\My Source\Widget\son subdirectorios. Pero no siempre necesitamos preocuparnos por eso, ¿verdad?
    3. Carpeta secundaria : con respecto a users OddThinkinguna carpeta secundaria (así como una subcarpeta)
    4. Carpeta principal : OddThinking userses su carpeta principal (solo menciono diferentes terminologías, no es gran cosa).
  4. Directorio o nombre de directorio : el primero para usar generalmente en la vida real, el segundo para estar en código. Esto se refiere a la ruta completa (o simplemente ruta completa ) hasta la carpeta principal del destino . En su caso, C:\users\OddThinking\Documents\My Source\Widget(Sí, un directorio nunca debe apuntar a un archivo). Utilizo el nombre del directorio en mi código ya que el directorio es una clase en .NET y el nombre del directorio es como lo llama la biblioteca. Es bastante consistente con el nombre de directorio utilizado en los sistemas UNIX.

  5. Nombre de archivo o nombre base : nombre del archivo junto con la extensión. En tu caso: foo.src. Yo diría que para un uso no técnico prefiero el nombre del archivo (es lo que significa para un usuario final), pero para fines técnicos me quedaría estrictamente con basename . MS utiliza a menudo el nombre de archivo, pero me sorprende cómo no son consistentes no solo en la documentación sino incluso en la biblioteca . El nombre del archivo podría significar el nombre base o la ruta completa del archivo. Así que prefiero el nombre base, así es como los llamo en código. Esta página en la wiki también dice que el nombre del archivo podría significar la ruta completa o el nombre base. Sorprendentemente, incluso en .NET puedo encontrar que el nombre base de uso significa el nombre raíz del archivo.

  6. Extensión o Extensión de nombre de archivo o Extensión de archivo : Me gusta el último. ¡Todo se refiere a lo mismo pero qué es nuevamente es un tema de debate! Wiki dice que es srccuando recuerdo haber leído que muchos de los idiomas lo interpretan como .src. Tenga en cuenta el punto. Entonces, una vez más, mi opinión es que, para usos ocasionales, no importa lo que sea, pero como programador siempre veo la extensión como .src.

    Ok, podría haber intentado buscar algunos usos estándar, pero estas son dos de las convenciones que sigo. Y se trata de caminos completos.

    1. Generalmente llamo ruta de archivo a una ruta completa que apunta a un archivo . Para mí, la ruta del archivo es clara, me dice qué es. Aunque con nombre de archivo lo encuentro como el nombre del archivo, en mi código lo llamo nombre de archivo . También es coherente con " nombre de directorio ". Desde el punto de vista técnico, ¡nombre se refiere al nombre completo! Es frustrante que .NET use el término nombre de archivo (así que tengo mi caso aquí) y, a veces, ruta de archivo para esto.

    2. Llamo directorio a una ruta completa que termina como directorio. De hecho, se puede llamar directorio a cualquier dirección que no apunte a un archivo. También lo C:\users\OddThinking\Documents\My Source\es un directorio, C:\users\OddThinking\es un directorio o incluso OddThinking\Documents\My Source\(mejor llamarlo subdirectorio o incluso mejor ruta relativa; todo eso depende del contexto en el que esté tratando). Bien arriba mencioné algo diferente sobre el directorio, que es el nombre del directorio. Esta es mi opinión: obtendré un nuevo camino para evitar confusiones. Qué es esto D:\Fruit\Apple\Pip\? Un directorio. Pero si la pregunta es cuál es el directorio o, mejor aún, el nombre del directorio D:\Fruit\Apple\Pip\, la respuesta es D:\Fruit\Apple\. Espero que esté claro.

    Yo diría que es mejor no preocuparse por los dos últimos términos, ya que son los que crean la mayor confusión (para mí personalmente). ¡ Simplemente use el término ruta completa !

Para responderte:

  1. con respecto al camino que has dado

    R) Ni idea. De todos modos, nunca necesité tener eso solo.

    B) nombre base

    C) Por el momento simplemente lo llamaría extensión de archivo, lo que menos me preocupa es que nunca necesité que solo se nombrara eso en mi código.

    D) extensión de archivo seguramente.

    E) No creo que este sea un requisito de propósito general. Ni idea. En .NET, el directorio base es el mismo que el nombre del directorio.

    F) camino relativo

    G) carpeta (carpeta principal al nombre base foo.src)

    H) nombre del directorio

    I) ruta completa (o incluso nombre de archivo)

  2. en general (perdón por ser un poco detallado, solo para aclarar el punto) pero suponiendo que foo.srcde hecho sea un archivo

    A) NA

    B) nombre base

    C) NA

    d) extensión

    E) directorio o simplemente ruta

    F) camino relativo

    G) NA

    H) directorio o simplemente ruta

    I) ruta completa (o incluso nombre de archivo)

Continuando con un ejemplo de mi parte:

  1. Considere el camino C:\Documents and Settings\All Users\Application Data\s.sql.

    1. C:\Documents and Settings\All Users\Application Data\s.sqles la ruta completa (que es un nombre de archivo)
    2. C:\Documents and Settings\All Users\Application Data\es el nombre del directorio.
  2. Ahora considere el caminoC:\Documents and Settings\All Users\Application Data

    1. C:\Documents and Settings\All Users\Application Dataes la ruta completa (que resulta ser un directorio)
    2. C:\Documents and Settings\All Userses el nombre del directorio.

Dos consejos míos:

  1. Sigo esta regla general de que cuando se trata de direccionar una dirección completa independientemente de su tipo, casi siempre la llamo "ruta completa". Esto no solo elimina el uso de dos terminologías para la ruta del archivo y la ruta de la carpeta, sino que también evita la posible confusión si va a nombrar el archivo como nombre de archivo (que para la mayoría de los usuarios se traduce inmediatamente como nombre base). Pero sí, si tiene que ser específico sobre el tipo de ruta, es mejor nombrar el nombre del archivo o el directorio en lugar de una "ruta" más genérica.

  2. Sea lo que sea, tienes tu propia idea en mente, sé coherente con ella en todo momento. Tenga un consenso entre los miembros del equipo de que esto significa esto y no aquello.

Ahora que recién desde el círculo tengo algo de práctica. Una nueva marca de términos sería la que se utiliza en las máquinas OS X y Android. Y todo esto se trata solo de rutas físicas en el sistema de archivos. En el caso de las direcciones web, surgiría un conjunto completamente nuevo de terminologías. Espero que alguien llene el vacío en este mismo hilo :) Me encantaría escuchar la convención con la que has seguido adelante.

nawfal avatar Mar 08 '2012 18:03 nawfal

En C++, Boost.Filesystem ha ideado una nomenclatura para las distintas partes de una ruta. Consulte la documentación de referencia sobre descomposición de rutas para obtener más detalles, así como este tutorial .

Aquí hay un resumen basado en el tutorial. Para:

  • Ruta de Windows:c:\foo\bar\baa.txt
  • Ruta Unix:/foo/bar/baa.txt

usted obtiene:

Part            Windows          Posix
--------------  ---------------  ---------------
Root name       c:               <empty>
Root directory  \                /
Root path       c:\              /
Relative path   foo\bar\baa.txt  foo/bar/baa.txt
Parent path     c:\foo\bar       /foo/bar
Filename        baa.txt          baa.txt
Stem            baa              baa
Extension       .txt             .txt

Estándar C++ISO/IEC 14882:2017

Además, la terminología Boost.Filesystem ha sido adoptada por C++ 17 => Verstd::filesystem

Function name     Meaning
----------------  -------------------------------
root_name()       Root-name of the path
root_directory()  Root directory of the path
root_path()       Root path of the path
relative_path()   Path relative to the root path
parent_path()     Path of the parent path
filename()        Path without base directory (basename)
stem()            Filename without extension
extension()       Component after last dot
Emile Cormier avatar Oct 29 '2014 17:10 Emile Cormier