Como você nomeia suas bibliotecas pessoais? [fechadas]


8

Eu sou muito ruim em nomear coisas.

O único nome que eu posso inventar genericamente é 'ajudante'. Digamos, se eu tiver um arquivo de cabeçalho que contenha funções de ajuda para manipular caminhos, costumo colocá-lo no meu diretório "helper" e chamá-lo de "path-helper.hpp" ou algo assim.

Obviamente, essa é uma convenção de nomes ruins. :)

Quero ter um esquema de nomenclatura consistente para minha pasta (e espaço para nome) que possa ser usado para sempre me referir aos meus próprios cabeçalhos e bibliotecas, mas tenho dificuldade em encontrar nomes fáceis de digitar ou lembrar (como boost) ... para que eu acabam chamando alguns deles de "ajudante" ou "stdext" ou outros enfeites, o que não é uma ótima idéia.

Como você encontra nomes para suas bibliotecas que são fáceis de lembrar e fáceis de digitar e que não são muito genéricos (como "auxiliar" ou "std" ou "stdext" ou algo parecido)?

Alguma sugestão sobre como fazer isso?


14
Gostaria de nomeá-lo MFCpara "Aulas Mehrdad fundação", mas, infelizmente, esta abreviatura foi tomada por quase duas décadas :(
dasblinkenlight

@dasblinkenlight: lol.
user541686

Porém, apenas no Windows :-)
johannes

@dasblinkenlight do (a) Middlesbrough Football Club, tão infeliz (;
Francisco Presencia

Respostas:


4

Tente agrupar funções auxiliares por tema e inclua o tema no nome da biblioteca. Um nome de biblioteca como "helper" pode ser muito genérico, mas um nome como "PathHelper", "FileIOHelper" diz muito sobre as funções que se pode esperar nessa lib (pessoalmente, prefiro "... Utilitários", mas isso é apenas uma questão de gosto pessoal). Por exemplo, tenho nomes de bibliotecas como "MathUtilities", "StringUtilities" "ConfigUtilities", "DBUtilities" e assim por diante.

Obviamente, para bibliotecas maiores de nossa equipe, usamos nomes sem nenhum termo genérico no final. E, para ser sincero, também temos uma biblioteca chamada "Comum" para algumas funções e classes que não se agrupam bem sob um nome de tópico específico. Mas tentamos manter essa lib pequena.


2

Geralmente, é um processo orgânico para mim.

Meus namespaces tendem a espelhar os nomes das minhas pastas, principalmente porque acho mais fácil encontrar as coisas dessa maneira.

Projetos corporativos geralmente têm um prefixo de empresa na frente do espaço para nome e, para projetos pessoais, alterno entre project-prefix.folder e apenas a pasta para os nomes.

As pastas "principais" tendem a ser óbvias pelo nome e geralmente estão relacionadas à sua função - "Foo". Para projetos maiores, detalharei a pasta principal para refletir o principal paradigma de programação que possa estar seguindo. Portanto, para o MVVM, eu teria "Foo.View", "Foo.ViewModel" e "Foo.Model" como nomes de exemplo.

Invariavelmente, funções auxiliares que não se encaixam em nenhum outro lugar começam a aparecer no projeto. Começarei com uma pasta do tipo "comum" ou "utilitários" para aterrá-los primeiro. "Helpers", "Base" e "Core" funcionariam igualmente bem para um local de pouso inicial.

Tento nomear minhas funções com base no Assunto e / ou Ação que eles executam. Para que eu possa ter um PathManager, PathChecker, etc ... Muitas vezes, eu sei que terei várias ações relacionadas a um assunto, então nomeei a classe como Assunto e adiciono métodos conforme necessário. Um dicionário de sinônimos pode ser útil aqui.

Eu encontrei uma alta correlação entre a facilidade de nomear um objeto e o quão bem posso descrever o que a função deve fazer. Um dos meus pontos de verificação pessoais é que, se estou lutando para nomear algo, isso significa que preciso refletir sobre o que a função realmente deve estar fazendo. Depois de corrigir os problemas de funcionalidade, o nome vem facilmente.

À medida que reuno mais funções auxiliares, vou migrá-las para sua própria pasta e / ou espaço para nome. Se eles tiram uma pasta do projeto raiz ou se uma subpasta na pasta do utilitário depende da natureza e quantidade das funções.


1

Da mesma forma que GlenH7, costumo ter uma biblioteca "-misc", em que org é uma abreviação de três ou quatro letras para quem quer que seja meu atual empregador.

Quaisquer novas funções aleatórias são colocadas lá até que um número suficiente delas se acumule para que um padrão surja. Nesse ponto, agrupo-os e pego funções relacionadas em bibliotecas com nomes mais sensatos, refatorando o código do cliente conforme necessário.

Às vezes, é necessário um pouco de disciplina para manter o tamanho da biblioteca gerenciável, mas atualmente minhas bibliotecas * -isc tendem a permanecer bem pequenas.

(Eu também sempre tenho uma biblioteca "devauto" e uma "testauto" que contêm funções "meta-level" destinadas a oferecer suporte ao desenvolvimento e à automação de teste).


0

Se fosse eu, eu teria apenas uma biblioteca de caminhos (muito provavelmente seria uma biblioteca de sistema de arquivos que continha um componente de caminho). Forneceria a interface exata de que preciso para realizar o trabalho. Certamente 90% disso seria um invólucro fino para o boost.filesystem ou qualquer outra lib de sistema de arquivos de idiomas, mas meu código só veria essa biblioteca consistente e agradável. Não é necessário lembrar se essa função estava no X, no X-helper, no X-utils ou no X-ext. Se o X precisar de ajuda, é hora de corrigir o X, não invente novos locais aleatórios para o código.


0

Eu também sou muito ruim nisso. Minha abordagem pragmática é usar o nome enriquecido por data e / ou projeto e / ou local até que eu tenha um nome razoável.

Sei para outra pessoa que é impossível ler, mas eu mesmo posso reconhecê-la rapidamente. E a maioria dessas bibliotecas acaba sendo de uso único para mim.


1
Sou só eu ou você realmente quer dizer coisas assim holycow-Boston-11:37PM-RainyOutside? :)
videiras
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.