Pergunta

Com mais e mais projetos em meu cinto eu acho que eu sou frequentemente repetindo muitas tarefas comuns de projeto para projeto, o cliente para cliente. Então eu comecei a montar uma biblioteca de "utilidade", uma coleção desses elementos comuns que são muitas vezes repetidas de projeto para projeto.

Até agora eu tenho utilitários para redimensionar imagens, grades de dados de exportação para Excel, enviar e-mails, e substituir mensagens tokenized.

Se você fosse construir / usando uma biblioteca de classe de utilitário NET, que tipos de processos que você vê como útil? O que namespaces / grupos que você imagina?

Atualizar

Estou a falar de uma biblioteca de classe real, separadas em namespaces para agrupar elementos comuns.

Foi útil?

Solução

  1. eu não iria escrever uma biblioteca chamada 'Common' ou 'Utilities' ou 'Diversos' ou ... Você começa a idéia. Em vez disso, eu teria um diretório chamado 'lib', e têm cada área de funcionalidade em uma biblioteca separada sob esse. Por exemplo, eu poderia ter Lib / Trace, Lib / UI, Lib / Net, Lib / Web para um projeto C ++. Para C #, eu teria Lib / Acme.Trace, Lib / Acme.Windows.Forms, Lib / Acme.Net, etc. (assumindo que o seu namespace de nível superior / empresa é chamado de 'Acme').
  2. YAGNI. Não vá escrever código que você pode necessidade.
  3. Não jogue coisas em uma biblioteca compartilhada até que você tenha usado-los em dois ou mais projetos.

Outras dicas

Pessoalmente, gostaria de colocar alguns dos essa funcionalidade em bibliotecas separadas, como "utilidade" é um termo bastante subjetiva, o que uma pessoa acha útil não é tão útil para outro.

Se dentro da biblioteca foi dividida em namespaces descritivos, então eu diria que é melhor (por exemplo, redimensionar imagens seria em algum tipo de .Drawing namespace, ou em um .Drawing.dll) .

Eu tenho muitas coisas em minha biblioteca de classes que partilho entre projetos:

  • recipiente e injeção de dependência framework IoC
  • Um quadro controller / observador completo, me permite código UI separado do código backlogic
  • Um conjunto independente de banco de dados razoável de classes para executar SQL, cuida de algumas das diferenças de sintaxe, principalmente nomes de função
  • Muitas outras classes auxiliares e métodos de utilidade para lidar com dados
  • Algumas classes de armazenamento interno padronizados, como Tuple<..> etc.
  • Algumas coleções personalizadas, como Set<T>, Heap<T>, bem como a abundância de métodos utilitários para lidar com vários tipos de coleções

A biblioteca de classes é adicionado quando eu preciso de mais coisas.

Eu sugiro que em vez de uma "utilidade" biblioteca de domínio específico apenas make (gráficos, autenticação, validação, etc) bibliotecas e apenas incluí-los onde eles são necessários. A chave, claro, é decidido como específica a ser. Mais especificidade é geralmente melhor.

Independentemente se ele não tem domínio, então você provavelmente não compreendê-lo totalmente o que significa que você deve reavaliar o que você está fazendo e tentando realizar em primeiro lugar.

Além disso, lembre-se que o que é útil em um ou dois projetos pode acabar sendo apenas útil em um ou dois projetos. Adicionando mais aulas do que o necessário só causa problemas de manutenção na estrada.

Embora eu sou apenas um desenvolvedor inexperiente me tenho encontrado funções RegEx e filtros SQL para ser bastante útil. Eu também tenho a funcionalidade de replicação de mesclagem para MSSQL que tem sido muito útil para mim até agora.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top