¿Cómo nombras tus bibliotecas personales? [cerrado]


8

Soy bastante malo nombrando cosas.

El único nombre que se me ocurre genéricamente es 'ayudante'. Digamos que si tengo un archivo de encabezado que contiene funciones de ayuda para manipular rutas, tiendo a ponerlo dentro de mi directorio "ayudante" y llamarlo "path-helper.hpp" o algo así.

Obviamente, esa es una mala convención de nombres. :)

Quiero tener un esquema de nomenclatura coherente para mi carpeta (y espacio de nombres) que pueda usar para referirme siempre a mis propios encabezados y bibliotecas, pero tengo problemas para encontrar nombres que sean fáciles de escribir o recordar (como boost) ... así que terminan llamando a algunos de ellos "ayudantes" o "stdext" o cualquier otra cosa, lo cual no es una gran idea.

¿Cómo encuentra nombres para sus bibliotecas que sean fáciles de recordar y de escribir, y que no sean demasiado genéricos (como "helper" o "std" o "stdext" o similares)?

¿Alguna sugerencia sobre cómo hacer esto?


14
Lo nombraría MFCpara "Clases de la Fundación Mehrdad", pero desafortunadamente, esta abreviatura se ha tomado durante casi dos décadas :(
dasblinkenlight

@dasblinkenlight: lol.
user541686

Sin embargo, solo en Windows :-)
johannes

@dasblinkenlight por el Middlesbrough Football Club, tan desafortunado (;
Francisco Presencia

Respuestas:


4

Intente agrupar las funciones de ayuda temáticamente e incluya el tema en el nombre de la biblioteca. Un nombre de biblioteca como "helper" puede ser demasiado genérico, pero un nombre como "PathHelper", "FileIOHelper" dice más o menos sobre qué funciones se pueden esperar en esa biblioteca (personalmente, prefiero "... Utilidades", pero eso es solo una cuestión de gusto personal). Por ejemplo, tengo nombres de biblioteca como "MathUtilities", "StringUtilities", "ConfigUtilities", "DBUtilities", etc.

Por supuesto, para las bibliotecas más grandes de nuestro equipo usamos nombres sin ningún término genérico al final. Y para ser sincero, también tenemos una biblioteca llamada "Común" para algunas funciones y clases que no se agrupan bien bajo un nombre de tema específico. Pero tratamos de mantener esa lib pequeña.


2

En general, es un proceso orgánico para mí.

Mis espacios de nombres tienden a reflejar los nombres de mis carpetas, principalmente porque creo que es más fácil encontrar las cosas de esa manera.

Los proyectos corporativos generalmente tienen un prefijo de empresa frente al espacio de nombres, y para proyectos personales, alterno entre project-prefix.folder y solo la carpeta para los nombres.

Las carpetas "principales" tienden a ser obvias para su nombre, y generalmente están relacionadas con su función: "Foo". Para proyectos más grandes, dividiré la carpeta principal para reflejar el paradigma de programación principal que puedo estar siguiendo. Entonces, para MVVM, tendría "Foo.View", "Foo.ViewModel" y "Foo.Model" como nombres de ejemplo.

Invariablemente, las funciones auxiliares que no caben en ningún otro lugar comienzan a arrastrarse en el proyecto. Comenzaré con una carpeta de tipo "común" o "utilidades" para aterrizarlas primero. "Ayudantes", "Base" y "Núcleo" funcionarían igual de bien para un lugar de aterrizaje inicial.

Intento nombrar mis funciones en función del Asunto y / o Acción que realizan. Entonces podría tener un PathManager, PathChecker, etc. A menudo, sé que tendré varias acciones relacionadas con un tema, así que nombraré la clase después del Asunto y agregaré métodos según sea necesario. Un tesauro puede ser útil aquí.

He encontrado una alta correlación entre la facilidad de nombrar un objeto y qué tan bien puedo describir lo que se supone que debe hacer la función. Uno de mis puntos de control personales es que si me cuesta nombrar algo, eso significa que necesito reflexionar sobre lo que se supone que está haciendo la función. Una vez que soluciono los problemas de funcionalidad, el nombre viene fácilmente.

A medida que reúna más funciones auxiliares, las migraré a su propia carpeta y / o espacio de nombres. Si obtienen una carpeta del proyecto raíz o si obtienen una subcarpeta en la carpeta de la utilidad depende de la naturaleza y cantidad de las funciones.


1

De manera similar a GlenH7, tiendo a tener una biblioteca "-misc", donde org es una abreviatura de tres o cuatro letras para quien sea mi empleador actual.

Cualquier nueva función aleatoria se coloca allí hasta que se hayan acumulado suficientes para que surja un patrón. En ese momento, los agrupo y extraigo funciones relacionadas en bibliotecas con nombres más sensatos, refactorizando el código del cliente según sea necesario.

A veces se ha requerido un poco de disciplina para mantener manejable el tamaño de la biblioteca, pero en la actualidad mis bibliotecas * -misc tienden a ser bastante pequeñas.

(También siempre tengo una biblioteca "devauto" y una "testauto" que contienen funciones de "meta-nivel" destinadas a apoyar el desarrollo y la automatización de pruebas).


0

Si fuera yo, solo tendría una biblioteca de rutas (es muy probable que sea una biblioteca de sistema de archivos que contenga un componente de ruta). Proporcionaría la interfaz exacta que necesito para hacer el trabajo. Claro, el 90% sería una envoltura delgada alrededor de boost.filesystem o cualquier lib de sistema de archivos de idioma que hubiera, pero mi código solo vería esta biblioteca consistente y agradable. No intento recordar si esa función estaba en X, X-helper, X-utils o X-ext. Si X necesita ayuda, es hora de ir a arreglar X, no inventar nuevas ubicaciones aleatorias para el código.


0

También soy muy malo en esto. Mi enfoque pragmático es enriquecer el nombre por fecha y / o proyecto y / o ubicación hasta que encuentre un nombre razonable.

Sé que para otra persona es imposible leerlo, pero yo mismo puedo reconocerlo rápidamente. Y la mayoría de estas bibliotecas terminan de un solo uso de todos modos para mí.


1
¿Soy solo yo o realmente haces cosas malas holycow-Boston-11:37PM-RainyOutside? :)
vides
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.