Het JNOA-veld om technische features eenvoudig vergelijkbaar te maken

Een van mijn beste vindingen die ik als programmeur in de backend van mijn vergelijkingssites heb geïntroduceerd is het JNOA-veld. Als je specificaties van technische dienstverlening of producten vergelijkbaar maakt dan zijn er vaak verschillende features die mogelijk zijn, of niet, onbeperkt in aantal is, of een beperkt aantal of als optie bij zijn te bestellen.

Dat zorgt voor een uitdaging om dat goed te kunnen vastleggen. Bij verschillende aanbieders kan op verschillende features er andere mogelijkheden zijn. De uitdaging die dat als programmeur geeft is dat je dan alle mogelijkheden moet vangen en dat dan voor elk van die features. Het mooie aan zelf aan de knoppen zitten is dat je als programmeur niet gehouden bent aan wat er al is. Je kan het ook zelf maken.

Daarom heb ik het zogeheten JNOA-veld jaren geleden geïntroduceerd in mijn vergelijkingssites. JNOA staat voor Ja, Nee, Optie, Aantal. Het werkt heel eenvoudig. Je hebt twee inputs, één waarbij door de gebruiker wordt aangegeven of de features aanwezig is (met een “select” of “radio inputs”): ja, nee, optioneel of een aantal. Wanneer de gebruiker voor aantal kiest dan kan deze het aantal in een aparte “text input” het aantal aangeven.

Het systeem ziet het echter als één veld en slaat het ook op in één veld in de database. De truc hierbij is dat elk van de waarden die met de JNO corresponderen een niet positieve integer value te geven en wanneer de gebruiker voor de A kiest dat de door de gebruiker ingegeven waarde positief is. Een aantal van een bepaalde feature moet immers altijd positief zijn. Dat kan dan in een “SIGNED INT” of vergelijkbaar veld worden opgeslagen.

Wanneer er wél met negatieve waarden zou moeten worden gewerkt dan kan er een non-integer value aan de JNO-waarden worden gegeven en dan dient de waarde in een “VARCHAR” of vergelijkbaar veld worden opgeslagen.

Het mooie aan het JNOA-veld is dat ook bepaalde waarden voor bepaalde velden niet relevant zijn. Stel dat de vraag of is of dat je PHP-scripts kan draaien, dan is het aantal niet heel relevant. Wanneer de vraag is of een domeinnaam is inbegrepen bij een bepaald hostingpakket dan is “optie” niet relevant. Het is immers inbegrepen of niet. Daarnaast zal de optie “Ja” ook niet snel relevant zijn en “onbeperkt” vermoedelijk ook niet. In een dergelijk geval zal een JNOA-veld dan alleen Nee én Aantal als opties moeten weergeven.

Het JNOA-veld kan met allerlei waarden worden toegepast. In het huidige ontwikkelingsproces heb ik daar ook de U van Unlimited aan toegevoegd. Zo kan er in principe onbeperkt worden gevarieerd met dit concept. Daarnaast is het een perfect voorbeeld hoe je als programmeur zelf de controle moet nemen en je niet moet blindstaren op de opties en mogelijkheden die er al zijn in de programmeertaal, het framework of de library die je gebruikt. Als het er niet nog is, dan bouwen we het toch gewoon zelf!