Decidindo quais valores devem ser configuráveis

5

Meu aplicativo é um programa em Java que controla um robô (que é essencialmente um pi de framboesa conectado a vários dispositivos). Existem muitos dispositivos no robô que possuem valores de endereço semi-constantes ou números de pinos. Atualmente, em nossa base de código, você verá muitas constantes estáticas definidas como:

static final long SLEEP_DURATION = 100;
static final byte MOTOR_CONTROLLER_ADDRESS = 0x01;
static final byte TOOLING_MOTOR_1_CHANNEL = 15;
static final byte TOOLING_MOTOR_2_CHANNEL = 12;

O problema é que quando estamos conectando todos os fios do robô, podemos acidentalmente trocar o motor de ferramentas 1 e 2. Nossas opções atuais quando isso acontece são religar o robô (demorado) ou recompilar o código do robô e recarregá-lo para o robô (também demorado).

Depois de olhar algumas bibliotecas, eu acho que eu poderia usar a Biblioteca de Configuração Commons para ler em um arquivo de propriedades para esses valores.

final byte toolingMotor1Channel;
final byte toolingMotor2Channel;
...
    toolingMotor1Channel = config.getByte("motorcontroller.toolingmotor1");
    toolingMotor2Channel = config.getByte("motorcontroller.toolingmotor2");

Isso não adiciona muita complexidade ao código, mas adiciona alguns. Então minha pergunta é:

Faz sentido, então, ter variáveis como SLEEP_DURATION ou MOTOR_CONTROLLER_ADDRESS configuráveis também? É possível que esses valores possam ser alterados no futuro, no entanto, é improvável. Onde desenho a linha com o que é configurado a partir dessa biblioteca?

    
por flakes 12.02.2017 / 01:35
fonte

1 resposta

4

Como você mesmo afirmou, se você entrar em tais situações de vez em quando durante seu ciclo de desenvolvimento, vale a pena fazer com que cada variável seja configurável. A estratégia que uso é definir uma propriedade configurável com um padrão, portanto, se a configuração não for encontrada, o padrão será usado. Em seguida, inicie sem propriedades definidas no arquivo. Ao fazer isso, você não precisa definir as configurações, a menos que seja necessário. Então, se você achar que alguma configuração padrão não está correta, você sempre pode definir essa propriedade no arquivo de propriedades de configuração para substituir o padrão.

Quando estiver perto da versão estável, você poderá decidir quais dessas propriedades de configuração deseja manter e qual delas deseja converter em constantes.

    
por 12.02.2017 / 02:55
fonte