Como não repetir-se entre os projetos e / ou idiomas
-
02-07-2019 - |
Pergunta
Eu estou trabalhando em vários projetos distintos, mas relacionados em diferentes linguagens de programação. Alguns desses projetos precisa analisar nomes escritos por outros projectos, e esperar um certo padrão de nome de arquivo.
Este padrão é agora codificado em vários lugares e em várias línguas, tornando-se uma bomba de manutenção. É bastante fácil de definir esse padrão exatamente uma vez em um determinado projeto, mas quais são as técnicas para defini-lo uma vez por todas para todos os projetos e para todas as línguas em uso?
Solução
Criar uma Domain Specific Language, em seguida, compilar que no código para cada uma das línguas-alvo que você está usando seria a melhor solução (e mais elegante).
A sua não é difícil fazer uma DSL - murchar incorporá-lo em algo (como dentro de Ruby desde o seu o 'em' coisa agora, ou outra língua como LISP / Haskell ...) ou criar uma gramática a partir do zero (uso Antlr?). Parece que o projeto é grande, então este caminho é valer a pena.
Outras dicas
Eu armazenar o padrão em um arquivo de texto simples e, dependendo de um determinado projeto:
- incorporá-lo na fonte em tempo de construção (pré-processamento)
- Se o acima não é uma opção, tratá-lo como um arquivo de configuração lido em tempo de execução
Edit: eu assumo o padrão é algo mais complicado do que um regex, caso contrário, eu iria com a solução DSL de outra resposta ??p>.
Você pode usar um script comum, processo ou serviço web para gerar os nomes de arquivo (dependendo do seu set-up).
Eu não sei quais os idiomas que você está falando, mas a maioria de línguas pode usar bibliotecas dinâmicas externas dlls / objetos compartilhados e funcionalidade de exportação comum desta biblioteca.
Por exemplo, você implementar a função nome do arquivo get em simples c lib e uso acrros resto de idiomas.
Outra opção será a de criar um código comum de forma dinâmica como parte do processo de construção para cada idioma isso não deve ser complexa.
Vou sugerir o uso de abordagem de ligação dinâmica se possível (você não dar informações suficientes para determinar isso), uma vez que manter esta solução será muito mais fácil, em seguida, manter a geração de código para diferentes idiomas.
Coloque o padrão em um banco de dados - a maneira mais fácil e confortável poderia estar usando banco de dados XML. Esta base de dados será acessível por todos os projetos e eles vão ler o padrão de lá