PUNT.KOMMA, - Eenvoud

PUNT.KOMMA,

22 augustus 2022

De puntkomma in Javascript is al jaren een punt van discussie. Moet hij daar nu staan of niet?

In de (al wat oudere) programmeertaal C is het duidelijk; na ieder statement moet een puntkomma komen te staan. Het is een statement-terminator. Op zich raar gekozen omdat in onze eigen taal de puntkomma dat nu juist niet is. In programmeertalen geeft het echter structuur.

In moderne programmeertalen, zoals Go en Swift, is de puntkomma echter optioneel. Hij hoeft er niet te staan en wordt in deze talen ook vaak gezien als hinderlijk.

Javascript komt uit 1995 en valt er een beetje tussenin. Hij is optioneel, maar anders dan in bijvoorbeeld Swift, wordt hij niet door iedereen als hinderlijk gezien. Er zijn duidelijk twee kampen; zij die vinden dat hij altijd moet worden gebruikt en zij die vinden dat hij nooit moet worden gebruikt. En daar zit dan weer een klein kampje tussen die het aan de tooling overlaat. Daarover later meer.

AUTOMATIC SEMICOLON INSERTION

Voordat we de kampen kunnen begrijpen moeten we nog wel een ding weten; ASI. Automatic Semicolon Insertion is het automatisch toevoegen van puntkomma’s op plekken waar de JavaScript taal ze verwacht, maar de programmeur ze niet expliciet heeft toegevoegd. Daar zijn duidelijke regels voor en dat is ook goed beschreven. Voor nu is het belangrijk om te weten dat het gebeurd. Omdat het automatisch gebeurt is het soms onverwacht en veroorzaakt het soms problemen. En waar problemen zijn, zijn oplossingen. En waar oplossingen zijn, zijn meningen.

KAMP ALTIJD EEN PUNTKOMMA

Dit kamp is van mening dat je ze altijd expliciet moet intypen. Als ASI soms voor problemen kan zorgen, is het beter de problemen voor te zijn en de puntkomma altijd te gebruiken. Het is eenvoudiger om ze altijd te gebruiken, dan om te weten en te snappen wanneer ASI de mist in gaat.

KAMP NOOIT EEN PUNTKOMMA

Dit kamp heeft een wat genuanceerdere mening. Zij gaan ervan uit dat ASI altijd aanwezig is en zijn werk goed doet. De situaties waar ASI voor problemen kan zorgen vinden zij sowieso situaties die vermeden moeten worden, omdat zij ‘bad coding practice’ zijn. Zij vinden dat de taal zonder puntkomma’s veel beter leest en een moderne uitstraling heeft.

KAMP IK BRAND MIJN VINGERS NIET

Je kan ook nog kiezen voor een tussenweg. Je typt ze niet expliciet in je code, maar de editor (in combinatie met wat extensies) voegt ze voor je toe. Dus in je uiteindelijke code zitten ze wel en eigenlijk hoor je dan ook in kamp ALTIJD.

ESLINT WEET (OOK GEEN) RAAD

Wat is nu eigenlijk de algemene tendens? Meestal kan je deze wel vinden in settings van linters, code sniffers en fixers. EsLint heeft een duidelijke regel ‘semi’ die twee waardes kent; ‘always’ en ‘never’. Deze komen duidelijk overeen met de twee kampen. Voor EsLint is ‘always’ de default waarde voor ‘semi’. En daarmee scharen zij zich in het kamp ALTIJD. Echter, de ‘semi’ rule is niet opgenomen in de ‘eslint:recommended’ rule-set. Een default installatie extend deze rule-set. En daarmee kiest EsLint dus geen kamp.

WAT IS NU DE STANDAARD?

De ‘JavaScript Standard Style’ (standardjs) is een guide, linter en fixer. Het wordt door vele bedrijven en communities gebruikt en lijkt de facto standaard te worden voor JavaScript. Zij kiezen duidelijk voor het kamp NOOIT. De situaties waar ASI moeilijkheden kan geven zouden nooit voor mogen komen, omdat zij getuige zijn van een slechte programmeer style.

Zo lijkt het er dus op dat kamp NOOIT langzaam terrein wint.

Maar zoals altijd met kampen het geval is, zal er altijd een kamp blijven dat nooit voor NOOIT zal gaan 😉  … of is het -)

Meer info :

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#automatic_semicolon_insertion

https://tc39.es/ecma262/#sec-rules-of-automatic-semicolon-insertion

https://eslint.org/docs/latest/rules/semi

https://eslint.org/docs/latest/rules/

https://standardjs.com