Menu

Nummers zonder controlecijfer: alleen formaat, nooit gevalideerd

Nummers zonder controlecijfer kunnen alleen op vorm worden gecontroleerd. Een formaat-only-uitspraak is een legitieme, nuttige uitkomst — en geen goedkeuring van de waarde.

Gepubliceerd

  • validatie
  • formaat
  • testgegevens

Veel van de identificatoren die een systeem verwerkt hebben helemaal geen gepubliceerde rekenkunde achter zich. Er is geen afsluitend teken om opnieuw te berekenen, geen gewogen som om te vergelijken, geen rest om te ondervragen. De reeks heeft een gedocumenteerde vorm en verder niets, en het meeste dat een validator eerlijk kan doen is de vorm bevestigen.

Die situatie maakt mensen ongemakkelijk, en ongemak levert twee tegenovergestelde fouten op. De ene is een regel verzinnen zodat het veld een bevredigend antwoord kan teruggeven. De andere is opgeven en alles accepteren. Beide zijn te vermijden zodra de formaat-only-uitspraak wordt behandeld als een volwaardig resultaat in plaats van een gebrek aan fantasie.

Welke nummers hebben geen gepubliceerd controlecijfer?

De categorie is breder dan ze lijkt. Ze omvat identificatoren uit registers die nooit een interne regel hebben gedocumenteerd, interne codes die door een bedrijf in plaats van een normalisatie-instituut zijn toegewezen, en waarden die zijn ontworpen om door mensen te worden gelezen en door klerken te worden opgeslagen in plaats van door machines te worden geverifieerd.

Ze omvat ook nummers die wel latente structuur bevatten die niemand heeft gepubliceerd. Een register kan nummers best opeenvolgend toewijzen, of een regio of een datum inbedden, zonder die conventie ooit te vermelden. Van buitenaf is die structuur onzichtbaar en onbruikbaar, en een geraden patroon als regel behandelen is erger dan onwetendheid toegeven.

De praktische toets is documentatie, niet intuïtie. Als de uitgevende autoriteit een controleregel heeft gepubliceerd, valt er iets te implementeren. Als ze een vorm heeft gepubliceerd, implementeer de vorm. Als ze geen van beide heeft gepubliceerd, is het eerlijke dekkingsniveau geen, en geen enkele analyse over een steekproef van echte waarden mag die classificatie veranderen.

De voorbeelden in dit artikel zijn illustratieve vormen in plaats van echte waarden. Geen echte identificator wordt hier weergegeven, en structurele beschrijvingen beschrijven alleen openbare regels.

Waarom kunnen sommige identificatoren niet met rekenkunde worden gecontroleerd?

Een controlecijfer heeft twee dingen nodig: een regel die het lichaam op één teken afbeeldt, en de zekerheid dat het uitgevende register die regel toepast. Waar een van beide ontbreekt, heeft de rekenkunde niets om mee te werken.

De geschiedenis verklaart de meeste gaten. Veel registers dateren van vóór software en waren ontworpen voor klerken die waarden tussen formulieren overschreven, dus hun ontwerpers hadden geen reden om machineverificatie in het nummer te bouwen. Andere zijn ingevoerd door wetgeving die vastlegde wat het nummer identificeert en het interne formaat aan het agentschap overliet, dat vervolgens niets publiceerde.

Privacy verklaart een deel van de rest. Een gepubliceerde controleregel is een openbaar feit en onthult niets over een individu, dus hij wordt zelden om die reden achtergehouden — maar het omringende formaat soms wel, en een schema zonder gepubliceerd formaat heeft ook geen gepubliceerde controle.

Het resultaat is een landschap met echte verscheidenheid in dekking. Die verscheidenheid is het onderwerp van het beeld per land, waar dezelfde drie niveaus terugkeren bij registers van elke omvang.

Wat betekent alleen formaat eigenlijk?

Een formaat-only-uitspraak zegt drie specifieke dingen en één belangrijk niet-ding. De drie zijn dat de reeks toegestane tekens gebruikt, dat de lengte er een is die het schema definieert, en dat eventuele gedocumenteerde interne indelingen consistent zijn met wat is aangeleverd. Het niet-ding is geldigheid, want er is geen rekenkunde om te bevestigen.

Dit duidelijk zeggen is een communicatieprobleem voordat het een technisch probleem is. Gebruikers lezen groene vinkjes als goedkeuring, dus een formaat-only-resultaat mag niet in dezelfde succesvolle stijl worden gestopt als een geslaagde controle. Het is geen mindere mate van succes; het is een andere bewering, en de interface moet het verschil zichtbaar maken zonder te suggereren dat er iets misging.

Het is ook van belang voor de systemen stroomafwaarts. Een importtaak die formaat-only-bevestigingen ontvangt, mag ze niet in dezelfde kolom schrijven als algoritmisch bevestigde waarden, want de twee hebben verschillende foutpercentages en zullen bij een audit uiteindelijk anders worden behandeld.

Hoe moet een nummer met alleen formaat worden gecontroleerd?

Controleer wat de documentatie ondersteunt, en stop daar.

  1. Normaliseer de invoer — verwijder scheidingstekens, voeg witruimte samen, normaliseer de lettervorm — en bewaar het origineel.
  2. Controleer de tekenset, en wijs letters af in een numeriek schema en symbolen overal.
  3. Controleer de lengte tegen de gedocumenteerde afmetingen van het schema.
  4. Inspecteer eventuele gedocumenteerde interne structuur, zoals een vaste prefix of een gereserveerde positie.
  5. Geef een formaat-only-uitspraak terug, zo geformuleerd dat ze vorm claimt en niets anders.

Voeg geen stap zes toe. Je eigen checksum berekenen voor een niet-gepubliceerd schema creëert een regel die het oneens zal zijn met het register zodra een echte waarde hem tegenkomt, en het meningsverschil zal onmogelijk aan een gebruiker uit te leggen zijn.

Twee details worden gemakkelijk gemist. Sommige schema’s definiëren meer dan één toegestane lengte, dus de lengtecontrole is een lidmaatschapstest in plaats van een gelijkheidstest. En normalisatie is geen reparatie: het verwijderen van opmaaktekens maakt de invoer schoon, maar verandert een benadering niet in een geldige waarde.

Waar een formaatcontrole haar plaats nog verdient

Formaatcontroles zijn goedkoop, en ze vangen de fouten die het echte verkeer werkelijk domineren: een teken dat tijdens het kopiëren wegvalt, een waarde die uit de verkeerde kolom is geplakt, een alfabetische reeks die in een numeriek veld wordt geplakt. Afgemeten tegen die fouten betaalt een vormtest zich binnen een dag productiegebruik terug.

Ze beschermen ook de systemen achter het formulier. Een veld dat onwettige tekens vóór opslag afwijst, houdt een klasse ruis uit de stroomafwaartse verwerking, en een veld dat een gedocumenteerde lengte afdwingt, houdt één afknotbug weg van het datawarehouse.

Wat een formaatcontrole niet kan, is alles wat het register vereist. Bevestigen dat een identificator is uitgegeven, dat hij bij de persoon hoort die hem toont, of dat hij nog actief is, zijn allemaal opzoekingen, en ze horen naast de formaatcontrole in plaats van erbinnen. Waar zo’n opzoeking bestaat, behandel haar als een netwerkafhankelijkheid met eigen time-outs en storingen, in de geest van het grensontwerp dat apart wordt besproken.

Voor ontwikkelaars: vier uitspraken en de woorden ervoor

Geef het concept een type, en geef elke tak zijn eigen tekst.

Uitspraak Betekenis Voorgestelde tekst
Geldig Het gepubliceerde algoritme is toegepast en het afsluitende teken komt overeen Het controlecijfer klopt voor dit schema
Ongeldig Het algoritme is toegepast en het afsluitende teken komt niet overeen Het formaat klopt, maar het controlecijfer niet
Alleen formaat Er is geen algoritme gepubliceerd; de vorm is bevestigd Het formaat is geldig; geldigheid kan niet worden bevestigd
Geen regel De invoer komt met geen enkel schema overeen dat het hulpmiddel implementeert Niet herkend — dit betekent niet dat de waarde onjuist is

Twee woorden zijn het verbannen waard uit de codebase. Het eerste is echt, wat geen van deze uitspraken vaststelt. Het tweede is nep, wat geen van beide vaststelt. Een hulpmiddel dat ze gebruikt zal uiteindelijk worden geloofd, en de overtuigingen zullen fout zijn. Als een formulier iets waars over de werkelijkheid moet weten, komt die kennis uit een opzoeking, niet uit rekenkunde; de drielaagsvisie op validatie legt uit waarom de lagen niet in elkaar kunnen worden samengevat.

Volgende stappen

Identificeer elk numeriek veld in je product dat op dit moment een simpele waar of onwaar teruggeeft, en ga na welke van de vier uitspraken het werkelijk uitdrukt. Neem dan een formaat-only-schema en bevestig dat je interface daar iets anders voor zegt dan voor een geslaagde controle, met de nummervalidatietool als referentie voor die tekst.

Verder lezen

Handleidingen over Validator voor creditcards en SSN