Menu

Numeri senza cifre di controllo: solo formato, mai validati

I numeri senza cifre di controllo possono essere verificati solo nella forma. Un giudizio di solo formato è un esito legittimo e utile — e non è un'approvazione del valore.

Pubblicato

  • validazione
  • formato
  • dati di test

Molti degli identificatori che un sistema gestisce non hanno affatto un’aritmetica pubblicata alle spalle. Non c’è un carattere finale da ricalcolare, nessuna somma ponderata da confrontare, nessun resto da interrogare. La stringa ha una forma documentata e nulla di più, e il massimo che un validatore può onestamente fare è confermare la forma.

Questa situazione mette a disagio, e il disagio produce due errori opposti. Uno è inventare una regola perché il campo possa restituire una risposta soddisfacente. L’altro è arrendersi e accettare qualsiasi cosa. Entrambi sono evitabili una volta che il giudizio di solo formato viene trattato come un risultato di prima classe anziché come un fallimento dell’immaginazione.

Quali numeri non hanno una cifra di controllo pubblicata?

La categoria è più ampia di quanto sembri. Comprende identificatori di registri che non hanno mai documentato una regola interna, codici interni assegnati da un’azienda anziché da un ente di normazione, e valori progettati per essere letti da esseri umani e archiviati da impiegati anziché verificati da macchine.

Comprende anche numeri che contengono una struttura latente che nessuno ha pubblicato. Un registro può benissimo assegnare numeri in sequenza, o incorporare una regione o una data, senza mai dichiarare la convenzione. Dall’esterno quella struttura è invisibile e inutilizzabile, e trattare uno schema indovinato come una regola è peggio che ammettere l’ignoranza.

La prova pratica è la documentazione, non l’intuizione. Se l’autorità emittente ha pubblicato una regola di controllo, c’è qualcosa da implementare. Se ha pubblicato una forma, implementa la forma. Se non ha pubblicato né l’una né l’altra, il livello di copertura onesto è nessuno, e nessuna quantità di analisi su un campione di valori reali dovrebbe poter cambiare quella classificazione.

Gli esempi in questo articolo sono forme illustrative anziché valori reali. Nessun identificatore autentico è qui riprodotto, e le descrizioni strutturali descrivono soltanto regole pubbliche.

Perché alcuni identificatori non possono essere controllati con l’aritmetica

Una cifra di controllo ha bisogno di due cose: una regola che mappa il corpo su un singolo carattere, e la certezza che il registro emittente applichi quella regola. Dove manca l’una o l’altra, l’aritmetica non ha nulla con cui lavorare.

La storia spiega la maggior parte delle lacune. Molti registri precedono il software ed erano progettati per impiegati che copiavano valori tra moduli, quindi i loro progettisti non avevano motivo di incorporare la verifica automatica nel numero. Altri sono stati introdotti da legislazioni che specificavano cosa identifica il numero e lasciavano il formato interno all’agenzia, che poi non ha pubblicato nulla.

La privacy ne spiega una parte del resto. Una regola di controllo pubblicata è un fatto pubblico e non rivela nulla su un individuo, quindi è raramente occultata per quel motivo — ma il formato circostante a volte lo è, e uno schema senza formato pubblicato non ha nemmeno un controllo pubblicato.

Il risultato è un panorama con una vera varietà di copertura. Questa varietà è l’argomento del quadro paese per paese, dove gli stessi tre livelli ricorrono attraverso registri di ogni dimensione.

Cosa significa davvero solo formato?

Un giudizio di solo formato dice tre cose specifiche e una importante non-cosa. Le tre sono che la stringa usa caratteri leciti, che la sua lunghezza è una di quelle definite dallo schema e che eventuali divisioni interne documentate sono coerenti con quanto fornito. La non-cosa è la validità, perché non c’è aritmetica da confermare.

Dire questo chiaramente è un problema di comunicazione prima che tecnico. Gli utenti leggono le spunte verdi come un’approvazione, quindi un risultato di solo formato non deve essere vestito con lo stesso stile di successo di una prova superata. Non è un successo minore; è un’affermazione diversa, e l’interfaccia dovrebbe rendere visibile la differenza senza implicare che qualcosa sia andato storto.

Conta anche per i sistemi a valle. Un processo di importazione che riceve conferme di solo formato non deve scriverle nella stessa colonna dei valori confermati da un algoritmo, perché i due hanno tassi di errore diversi e alla fine verranno trattati diversamente in un controllo.

Come va controllato un numero di solo formato?

Controlla ciò che la documentazione supporta, e fermati lì.

  1. Normalizza l’input — elimina i separatori, comprimi gli spazi, riduci le maiuscole e minuscole — e conserva l’originale.
  2. Verifica il set di caratteri, rifiutando le lettere in uno schema numerico e i simboli ovunque.
  3. Verifica la lunghezza rispetto alle dimensioni documentate dallo schema.
  4. Ispeziona qualsiasi struttura interna documentata, come un prefisso fisso o una posizione riservata.
  5. Restituisci un giudizio di solo formato, formulato in modo che affermi la forma e nulla di più.

Non aggiungere un sesto passo. Calcolare un tuo checksum per uno schema non pubblicato crea una regola che sarà in disaccordo con il registro la prima volta che un valore autentico la attraversa, e il disaccordo sarà impossibile da spiegare a un utente.

Due dettagli sono facili da trascurare. Alcuni schemi definiscono più di una lunghezza lecita, quindi il controllo di lunghezza è un test di appartenenza anziché di uguaglianza. E la normalizzazione non è riparazione: rimuovere i segni di formattazione pulisce l’input, ma non trasforma un’approssimazione in un valore valido.

Dove un controllo di formato si guadagna comunque il suo posto

I controlli di formato sono economici, e intercettano gli errori che di fatto dominano il traffico reale: un carattere perso durante la copia, un valore incollato dalla colonna sbagliata, una stringa alfabetizzata incollata in un campo numerico. Misurato contro quei fallimenti, un test di forma si ripaga entro un giorno di uso in produzione.

Proteggono anche i sistemi dietro il modulo. Un campo che rifiuta i caratteri illeciti prima della memorizzazione tiene una classe di rumore fuori dall’elaborazione a valle, e un campo che impone una lunghezza documentata tiene un bug di troncamento lontano dal data warehouse.

Ciò che un controllo di formato non può fare è qualsiasi cosa richieda il registro. Confermare che un identificatore è stato emesso, che appartiene alla persona che lo presenta o che è ancora attivo sono tutte operazioni di consultazione, e appartengono accanto al controllo di formato anziché dentro di esso. Dove una simile consultazione esiste, trattala come una dipendenza di rete con i propri timeout e i propri fallimenti, nello spirito del progetto del confine discusso separatamente.

Per gli sviluppatori: quattro giudizi e le parole per esprimerli

Dai un tipo al concetto, e dai a ogni ramo la sua formulazione.

Giudizio Significato Formulazione suggerita
Valido L’algoritmo pubblicato è stato applicato e il carattere finale concorda La cifra di controllo corrisponde a questo schema
Non valido L’algoritmo è stato applicato e il carattere finale non concorda Il formato corrisponde ma la cifra di controllo no
Solo formato Nessun algoritmo è pubblicato; la forma è stata confermata Il formato è valido; la validità non può essere confermata
Nessuna regola L’input non corrisponde ad alcuno schema implementato dallo strumento Non riconosciuto — questo non significa che il valore sia falso

Due parole meritano di essere bandite dal codice. La prima è reale, che nessuno di questi giudizi stabilisce. La seconda è falso, che nessuno di essi stabilisce nemmeno. Uno strumento che le usa finirà per essere creduto, e le convinzioni saranno sbagliate. Se un modulo ha bisogno di sapere qualcosa di vero sul mondo, quella conoscenza viene da una consultazione, non dall’aritmetica; la visione a tre livelli della validazione spiega perché i livelli non possono essere ridotti l’uno nell’altro.

Passi successivi

Individua ogni campo numerico del tuo prodotto che attualmente restituisce un semplice vero o falso, e controlla quale dei quattro giudizi stia davvero esprimendo. Poi prendi uno schema di solo formato e conferma che la tua interfaccia dica per esso qualcosa di diverso rispetto a una prova superata, usando lo strumento di validazione dei numeri come riferimento per quella formulazione.

Continua a leggere

Guide su Validatore di numeri di carta e documenti d'identità