Sviluppo della sintassi di configurazione - best practice / regole / metodi?

0

Attualmente sto sviluppando una piccola applicazione, che verifica se i dati forniti soddisfano determinati requisiti. I requisiti sono in realtà una lunga lista e potrebbero cambiare, quindi ho definito una sintassi che mi consente di specificare brevemente tutti i requisiti e in un file separato.

Ora i requisiti generali per l'applicazione sono cambiati e ho bisogno di cambiare la sintassi della mia configurazione. Il che mi spinge a chiedermi se esiste una metodologia o una buona pratica per sviluppare tali sintassi. Attualmente quello che faccio è

  • Penso ai requisiti e ho trovato una sintassi iniziale,
  • inizia a configurare i primi elementi e osserva come funziona.
  • Se trovo qualcosa che non funziona bene o non funziona affatto con la sintassi corrente, cambio la sintassi, se possibile in un modo compatibile con le versioni precedenti.

Questo in qualche modo funziona per me, ma sembra un po 'come pescare in acque agitate. Inoltre, penso che non porti necessariamente alla sintassi più concisa e facile da capire / usare.

Quindi mi stavo chiedendo cosa facciano gli altri, soprattutto se c'è un approccio migliore a questo.

    
posta Isaac 25.08.2014 - 11:37
fonte

4 risposte

2

La mia esperienza è che non vale la pena spendere troppo molto tempo per perfezionare una sintassi per esprimere i requisiti.

I requisiti cambieranno di nuovo, e molto probabilmente in modi che non avevate previsto, quindi è improbabile che colpiate la soluzione perfetta in qualsiasi ragionevole lasso di tempo. Di solito è più semplice limitarsi a tenere il vecchio codice di analisi come un richiamo per chiamare quando si tratta di dati legacy, anche una serie di fallback, se necessario. Sembra un po 'brutto, ma la compatibilità a ritroso è brutta, e lo considero OK se il codice lo riflette, purché ogni strategia di analisi alternativa sia ragionevolmente bella da sola.

    
risposta data 25.08.2014 - 11:41
fonte
1

La maggior parte delle lingue ha a disposizione una sorta di libreria di convalida. In C #, ad esempio, ho utilizzato FluentValidation , che consente di specificare le regole aziendali con un'API fluente.

public class Post
{
    public string Title;
    public string Body;
    public DateTime CreatedAt;
}

E il validatore:

public class PostValidator : BaseValidator<Post>
{
    public PostValidator()
    {
        RuleFor(p => p.Title)
            .NotEmpty()
            .Length(1,50);

        RuleFor(p => p.Body)
            .NotEmpty();
    }
}

È consigliabile qualcosa del genere, soprattutto perché molte di queste librerie di convalida sono testabili dell'unità.

    
risposta data 25.08.2014 - 15:19
fonte
1

Questo sembra il tipo di situazione in cui XML funzionerebbe bene. Puoi iniziare con tag di base per cose come essere richiesto, o avere una certa lunghezza, ecc; e se in seguito riceverai nuovi requisiti che richiedono un nuovo tipo di vincolo, devi solo aggiungere un tag e un codice per verificare il tag.

    
risposta data 25.08.2014 - 15:52
fonte
0

Ho usato un programma di utilità molti anni fa che ha fatto una cosa simile. Dato un file flat, è possibile analizzare ogni record e controllare che ogni colonna soddisfi determinati requisiti.

I blocchi di base erano tipi , intervalli e valori .

Tipi erano molto di base come:

  • Stringa
  • Int
  • Float
  • Data

Per alcune di queste colonne, è possibile definire intervalli . Ad esempio, potresti dire che per una determinata colonna, i valori 101-999 erano valori validi.

Per le colonne più complesse, puoi definire i valori validi. Per esempio. per genere potresti avere:

  • M
  • F
  • U

Semplice ma efficace. Lo abbiamo usato per tutti i tipi di file di dati.

    
risposta data 25.08.2014 - 11:50
fonte

Leggi altre domande sui tag