La stringa si divide per creare matrici

0

La creazione di un array di stringhe a scopo di configurazione o di verifica può diventare lungo e brutto nel codice. Ad esempio:

arrayOfStrings = ['one','two','three','four']

Spesso per ridurre i caratteri e migliorare la leggibilità userò le operazioni con le stringhe per contrarle da una stringa grezza:

arrayOfStrings = 'one two three four'.split(' ')

Il mio fondamento logico è che rende gli oggetti più facili da leggere per una persona, poiché vedrebbero gli spazi vuoti ( one two ) più facili rispetto ai delimitatori stringa e matrice ( 'one','two' ).

Se è noto che le stringhe non contengono spazi, sarebbe contrario alla buona pratica di programmazione?

    
posta 07.11.2014 - 05:14
fonte

1 risposta

1

Sarebbe una cattiva pratica, perché introduce una dipendenza da un'assunzione sottile che è difficile da documentare e difficile da ricordare con precisione: vale a dire, che i valori mantenuti in questo luogo sono stringhe senza spazi in esse . Questo è quasi lo stesso di "qualsiasi stringa", e la precedente definizione sarà inevitabilmente scambiata per quest'ultimo un giorno.

I valori di configurazione come questi quasi sicuramente dovranno cambiare man mano che il sistema si sviluppa. Conservarli in questo modo funzionerà fino a un giorno, i nuovi dati violeranno l'assunzione inespressa e introdurranno un difetto. Si noti che il difetto sarà probabilmente sottile: i valori prima della stringa con lo spazio al suo interno saranno ancora elaborati correttamente e quelli successivi appariranno leggermente nella posizione sbagliata, solo il valore stesso mancherà e due o più altri prenderanno il suo posto.

In un certo senso, precondizioni sottili e difetti sottili come questo sono molto peggiori di quelli ovvi. Gli errori lampanti vengono notati rapidamente e sradicati rapidamente. Un comportamento scorretto come questo è passibile di passare inosservato per un po 'di tempo e causare danni che non saranno immediatamente noti, fino a quando non può essere facilmente riparato e la causa non può essere facilmente trovata perché il programmatore che ha costruito il metodo di archiviazione ha spostato.

(Che cosa, allora, dovresti fare per memorizzare un gran numero di stringhe letterali? A meno che la tua lingua abbia un costrutto senza quote come gli elenchi Lisp o l'operatore qw() di Perl, sei quasi sicuramente meglio tenere i valori stringa in una proprietà file o un database piuttosto che scriverli nel codice. Ci sono altri motivi per cui questa è una buona idea, ma evitare i metodi che sono difficili da leggere o sottilmente problematici è una ragione sufficiente.)

    
risposta data 07.11.2014 - 08:24
fonte

Leggi altre domande sui tag