Qual è la migliore pratica per gestire gli spazi bianchi quando si lascia che l'utente modifichi la configurazione, le coppie nome = valore?

8

Ad esempio, si consente all'utente di definire la famigerata variabile del percorso. Come interpretate apppath = C:\Program Files\App ?

Sembra che una pratica adottata dal linguaggio di programmazione ignori gli spazi bianchi e li lasci intorno al segno di uguaglianza per la leggibilità, ma potrebbe essere un valore di variabile valido con uno spazio bianco nell'applicazione (si consideri, è un suffisso).

Anche i tasti possono contenere spazi bianchi, no?

Qual è la migliore pratica generale per la mia applicazione? Se ho:

key-example = value-example

dovrei interpretare la chiave come "key-example" o "key-example " e il valore come "value-example" o " value-example" ?

    
posta Val 01.02.2015 - 13:12
fonte

2 risposte

14

Come utente , non mi aspetto che lo spazio bianco su entrambi i lati del segno di uguale cambi il valore della chiave o il valore. Vedi questa domanda correlata su unix.SE così come confuso la situazione può essere.

Non rendere più difficile i tuoi utenti, elimina gli spazi bianchi sia dalla chiave che dal valore. Se lo spazio bianco iniziale ha un caso d'uso reale per entrambi, allora lascia che l'utente inserisca la chiave o il valore tra virgolette.

    
risposta data 01.02.2015 - 19:42
fonte
11

Sta a te definire le regole per la tua app.

Ad esempio, puoi definire che:

  • Gli spazi bianchi prima o dopo il segno di uguaglianza vengono ignorati,

  • Gli spazi bianchi all'interno della chiave sono vietati,

  • Gli spazi bianchi all'interno del valore possono essere utilizzati solo se il valore è racchiuso tra virgolette, quindi:

    say-hello = Hello, World!
    

    è vietato, mentre:

    say-hello = "Hello, World!"
    

    è permesso, il che rende anche possibile avere prefissi di uno spazio:

    say-hello = "    Indentation is sweet."
    

La definizione di un formato può essere un compito complesso. Ad esempio:

  • Come puoi evitare le virgolette?

  • Come fai a sfuggire al carattere di escape che usi per sfuggire alle virgolette?

  • Come gestisci i valori vuoti?

  • Qual è la lunghezza massima di una chiave? Che dire di un valore?

  • Come gestisci i valori multilinea?

  • E i caratteri Unicode di spazi bianchi diversi da uno spazio (come un carattere di spazio non frazionato)?

  • Che dire dei caratteri Unicode che di solito non vengono visualizzati sullo schermo ? Ad esempio, come gestisci le categorie Unicode Cf o Zl?

  • Quali sono i caratteri consentiti nella chiave? Ad esempio, è:

    '
    

    una chiave valida?

  • La linea seguente dovrebbe funzionare? ¹

    say-hello ꘌ "Hello, World!"
    

    Suggerimento: il segno di uguaglianza non è un segno di uguaglianza, ma il carattere 0xa60c (Vai syllable lengthener). Sebbene poche persone utilizzino questo simbolo anziché l'uguaglianza, il caso più frequente è una copia-incolla da Microsoft Word (guarda attentamente le virgolette):

    say-hello = “Hello, World!”
    
  • ecc.

Questo è il motivo per cui, a meno che tu non sia completamente sicuro che puoi definire un formato e descriverlo con precisione e in modo verbale, utilizza un formato già esistente .

JSON o XML sono formati comunemente usati che puoi utilizzare in quasi tutti i linguaggi di programmazione. È anche possibile astrarre il formato sottostante utilizzando un database. Redis , ad esempio, è una soluzione popolare per l'archivio di valori-chiave.

¹ Gli utenti di Chrome che utilizzano Windows probabilmente vedrebbero un punto interrogativo in un quadrato. Con altri browser o con Chrome su Linux, il personaggio appare come un segno di uguaglianza e può facilmente essere fuorviante: l'unica differenza visiva è che c'è una piccola differenza nello spazio tra le barre orizzontali.

    
risposta data 01.02.2015 - 13:51
fonte