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?

Foi útil?

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 .

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á

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