Gestione delle costanti nell'applicazione

4

La nostra applicazione ha in 2 parti un'app Web che esegue ROR e un servizio Web che esegue Sinatra. L'applicazione comunica con il dispositivo mobile per il quale utilizziamo costanti diverse a seconda del messaggio che dobbiamo inviare al dispositivo. Attualmente stiamo utilizzando costanti intere salvate in un modulo. Ad esempio:

SEND_HI="122"

Man mano che l'applicazione è cresciuta e abbiamo circa 50+ costanti ci stiamo rendendo conto che questo è un cattivo modo di gestire le costanti in quanto diversi sviluppatori sembrano dare costanti e scontri diversi. Inoltre c'è una discrepanza tra i valori costanti in ROR e sinatra (a causa di errori degli sviluppatori, ovviamente). Che cos'è un modo semplice per gestire costanti o identificatori di messaggi.

    
posta djd 10.02.2012 - 12:07
fonte

2 risposte

1

Bene, prima di tutto, probabilmente dovresti evitare di memorizzare tutte le tue costanti nello stesso posto. Se si dispone di due servizi diversi, è necessario utilizzare due moduli diversi per memorizzarli. Inseriscili come sottomoduli, se preferisci, ad es. Constants.Ror e Constants.Sinatra . La separazione logica dei due aiuterà ad evitare conflitti di denominazione e faciliterà la ricerca di quali costanti applicare per quale servizio.

Non ho molta familiarità con Ruby. Ha una struttura enum ? Dal momento che stai usando costanti intere (che presumo sarebbero uniche), un enum sarebbe l'ideale per prevenire conflitti costanti.

    
risposta data 10.02.2012 - 14:45
fonte
1

Le due grandi tecniche in quest'area sono la gestione dei namespace e "single-source-of-truth".

L'idea di base della gestione dello spazio dei nomi è quella di avere una gerarchia di nomi in modo che il nome di una costante renda chiaro quale parte del sistema si riferisce a, e a cosa serve. In C ++, ad esempio, questo viene fatto con la parola chiave "namespace", mentre in Python e Java ciò avviene tramite nomi di classi e moduli.

La single-source-of-truth è una tecnica per la gestione delle costanti condivise tra diversi linguaggi di implementazione. L'idea è di mantenere i valori master per una specifica categoria di costanti in un singolo file. Questo file viene quindi elaborato dal tuo sistema di generazione per generare come output una definizione in ciascuna lingua di implementazione nel tuo sistema più ampio. Ciò significa che esiste un unico posto per il mantenimento di questi e, per esempio, il file di intestazione C che la parte basata su C del sistema include per ottenere i valori delle costanti non è mai registrato nel sistema di controllo della versione. C'è solo una posizione per aggiornare il valore di una costante o aggiungere una nuova costante correlata.

    
risposta data 12.02.2012 - 17:39
fonte

Leggi altre domande sui tag