Pergunta

Quando o aplicativo leva alguns (~ 5) parâmetros de configuração, eo aplicativo vai para ser usado por usuários não-tecnologia (ou seja, BEIJO ), como você costuma lidar com leitura opções de configuração, e em seguida, passando em torno dos parâmetros entre objetos / funções (Vários módulos)?

exemplos Opções:. Diretórios de entrada e saída / nomes de arquivos, nível de verbosidade

Eu geralmente uso optparse (Python) e passar em torno das opções / parâmetros como argumentos; mas eu estou querendo saber se é mais comum o uso de um texto de configuração arquivo que é lido diretamente por objetos de todos os módulos (mas então, não é este como variáveis ??que têm 'global' ?, e sem que ninguém 'possuir' o Estado?).

Outra questão comum é o teste de unidade; se eu quiser unidade de teste cada módulo único independentemente, um módulo específico pode requerem apenas 1 fora das opções de configuração 5; Como você costuma dissociar indivíduo módulos / objetos do resto da aplicação, e ainda assim permitir que ele aceitar 1 ou 2 parâmetros necessários (faz o framework de teste de unidade de alguma forma invocar ou assumir a funcionalidade de configuração)?

Meu palpite é que não há uma maneira correta única para fazer isso, mas tinha ser interessante para ler sobre várias abordagens, ou padrões bem conhecidos.

Foi útil?

Solução 2

"Counts answer"
Please update these counts and feel free to add/modify.

Do you usually read config options via:
- command-line/gui options : 1
- a config text file       : 0


How do multiple modules/objects have access to these options?
- they receive them from the caller as an argument: 1
- read them directly from the config text file:     0


When doing unit-testing of a single module (NOT the "main" module)
and the module uses one option, e.g. input filename:
- unit-test framework provides own "simplified" config functionality: 0
- unit-test framework invokes main app's config functionality:        1


Do you use:
- optparse:  1
- getopt:    0
- others?


Please list any config management "design pattern" 
(usable in Python) and add a count if you use it - thanks.
- 
-

Outras dicas

Você costuma ler opções de configuração via: - / opções gui de linha de comando - um arquivo de texto de configuração

Ambos. Usamos settings.py e logging.ini do Django. Nós também usar as opções de linha de comando e argumentos para as opções que a mudança com mais frequência.

Como fazer vários módulos / objetos têm acesso a essas opções?

  • settings.py; logging.ini -. Não se pode dizer
  • As nossas opções são privados para o programa principal, e usado para construir
    argumentos para funções ou inicializadores de objeto.

[Compartilhando as opções optparse é uma grande dor no pescoço e se liga desnecessárias um monte de coisas em uma confusão não testável.]

Ao fazer teste de unidade de um único módulo (não o módulo "principal"): (Por exemplo, lido opção especificando nome de ficheiro de entrada)

[I não pode analisar a questão. Eu suponho que este é "como você testar quando existem opções?"]

A resposta é - nós não. Uma vez que apenas os principais parses método de linha de comando opções, nenhum outro módulo, função ou classe tem alguma idéia de opções de linha de comando. Não há como este módulo "requerem 1 dos 5 opções de configuração" classes do módulo (ou funções) têm argumentos comuns e que é isso.

Nós usamos somente optparse.

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