Decidere quali valori devono essere configurabili

5

La mia applicazione è un programma Java che controlla un robot (che è essenzialmente un raspberry pi collegato a un sacco di dispositivi). Ci sono molti dispositivi sul robot che hanno valori di indirizzo semi-costante o numeri di pin. Attualmente nella nostra base di codice vedrete molte costanti statiche definite come:

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;

Il problema è che quando siamo collegati tutti i fili nel robot, potremmo accidentalmente scambiamo motore utensili 1 e 2. I nostri attuali opzioni quando questo accade si ricablare il robot (in termini di tempo) oppure ricompilare il codice del robot e ricaricalo sul robot (anche in termini di tempo).

Dopo aver esaminato alcune librerie credo che avrei potuto utilizzare la Commons configurazione libreria per leggere in un file di proprietà per questi valori.

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

Questo non aggiunge troppa complessità al codice, ma ne aggiunge alcuni. Quindi la mia domanda è:

Ha senso quindi avere anche variabili come SLEEP_DURATION o MOTOR_CONTROLLER_ADDRESS configurabili? È possibile che questi valori possano essere modificati in futuro, tuttavia è improbabile. Dove posso tracciare la linea con ciò che viene configurato da questa libreria?

    
posta flakes 12.02.2017 - 01:35
fonte

1 risposta

4

Come hai affermato tu stesso, se ti capiti in queste situazioni ogni tanto durante il tuo ciclo di sviluppo, vale la pena di rendere configurabile ogni variabile. La strategia che utilizzo è definire una proprietà configurabile con un valore predefinito, quindi se la configurazione non viene trovata, viene utilizzato il valore predefinito. Quindi iniziare senza proprietà definite nel file. In questo modo, non è necessario definire le configurazioni, a meno che non sia necessario. Quindi se scopri che alcune configurazioni di default non sono corrette, puoi sempre definire quella proprietà nel file delle proprietà di configurazione per sovrascrivere il valore predefinito.

Una volta che sei vicino al rilascio stabile, puoi decidere quale di queste proprietà di configurazione vuoi mantenere e quale vuoi convertire in costanti.

    
risposta data 12.02.2017 - 02:55
fonte

Leggi altre domande sui tag