De WordPress coderingsstandaarden de Ternary-operator en Yoda-voorwaarden

Op dit punt in de serie hebben we veel terreinen behandeld. Tot nu toe hebben we de volgende onderwerpen besproken:

  • Naamconventies en functieargumenten
  • Het gebruik van enkele offertes en dubbele aanhalingstekens
  • Inspringen, Ruimtegebruik en achterliggende spaties
  • Brace-stijl, reguliere expressies en PHP-tags

Heel veel dingen, toch?

In dit specifieke artikel dacht ik dat we het een beetje gemakkelijker zouden nemen voordat we het laatste onderwerp zouden bespreken. Als zodanig gaan we twee heel eenvoudige onderwerpen behandelen (die vaak worden genegeerd of gecompliceerd).

Concreet gaan we het hebben over de ternaire operator en we gaan het hebben over Yoda-voorwaarden.


Een woord over WordPress-voorwaarden

Als het gaat om het schrijven van op WordPress gebaseerde code, zeggen de coderingsnormen alleen dat we eerst moeten streven naar leesbaarheid. Rechtstreeks van de Codex:

Over het algemeen is leesbaarheid belangrijker dan slimheid of beknoptheid.

Maar daar is een beetje een nuance hiervoor. Sommige ontwikkelaars beschouwen de ternaire operator als een beetje in tegenspraak met dit specifieke principe, specifiek omdat het nog een andere manier is om een if / else verklaring en als de ontwikkelaar niet bekend is met het schrijven of lezen van de ternaire operator, dan is dit in strijd met dit principe.

We zullen dit in een moment dieper bekijken.


De Ternary-operator

Ten eerste, voor degenen die niet vertrouwd zijn, is de ternaire operator een vereenvoudigde manier van schrijven if / else voorwaardelijke verklaring. Het wordt meestal gebruikt enkel en alleen wanneer de voorwaardelijke is van de eenvoudigste vorm en enkel en alleen wanneer er een single is als en een single anders blok.

Laten we zeggen dat we een dergelijke voorwaarde hebben:

 $ uses_gasoline = null; if ('hybride' == $ car_type) $ uses_gasoline = false;  else $ uses_gasoline = true;  echo $ uses_gasoline;

Natuurlijk, dit is een beetje een gekunsteld voorbeeld, maar je begrijpt het wel. Ik probeer tenslotte eenvoudig aan te tonen hoe je een dergelijke voorwaarde in een vorm omzet die door de ternaire operator wordt gebruikt.

In overeenstemming met het bovenstaande voorbeeld, kunt u het volgende doen:

 $ uses_gasoline = 'hybrid' == $ car_type? false: true; echo $ uses_gasoline;

Heb je zin? Een belangrijk ding om op te merken: de ternaire operator test op waar (in plaats van fout, uiteraard).

Voor wat het waard is, vind ik dat dit veel op het lezen van een zin. De eerste clausule stelt een vraag (duidelijk onderbroken door een vraagteken), waarbij de twee mogelijke antwoorden worden geretourneerd op basis van de evaluatie van de voorwaardelijke vraag..

Er is een waarschuwing voor het controleren op waar alles wat is gedocumenteerd in de Codex:

Een uitzondering zou gebruiken ! leeg(), omdat het testen op false hier over het algemeen meer intuïtief is.

In mijn ervaring was dat de enige tijd om een ​​negatieve evaluatie te gebruiken in het voorwaardelijke. Alle tijden die ik heb doorgebracht met werken met de ternaire operator, heb ik ontdekt dat het testen op false vaak de ternaire evaluatie moeilijker maakt om te ontcijferen.

Bovendien heb ik geconstateerd dat het het beste is om één evaluatie te geven en kan zijn twee evaluaties onder zeer eenvoudige, duidelijke omstandigheden.

Behalve dat, dat is hoe je de ternaire operator kunt gebruiken in je dagelijkse WordPress-werk


Yoda-voorwaarden

Als je nauwlettend volgt, zul je merken dat ik iets heb gedaan dat de meeste programmeertalen (of zelfs PHP-gebaseerde platforms buiten WordPress) niet regelmatig doen:

De vergelijking van de voorwaardelijke werd gedaan door de waarde te vergelijken met de variabele; niet andersom.

Traditioneel zien we zoiets als dit:

 $ uses_gasoline = null; if ($ car_type == 'hybrid') $ uses_gasoline = false;  else $ uses_gasoline = true;  echo $ uses_gasoline;

En de overeenkomstige ternaire operator zou er ongeveer zo uitzien:

 $ uses_gasoline = $ car_type == 'hybride'? false: true; echo $ uses_gasoline;

Dus als de meerderheid van de programmeertalen en platforms niet doen Yoda-voorwaarden gebruiken, waarom dan WordPress?

Volgens de Codex:

Als u in het bovenstaande voorbeeld een gelijkteken weglaat (geef toe, het gebeurt zelfs voor de meest doorgewinterde mensen), krijgt u een ontleedfout, omdat u niet kunt toewijzen aan een constante zoals waar. Als de verklaring andersom was ($ the_force = true), de opdracht zou volkomen geldig zijn, terugkeren 1, waardoor de if-opdracht wordt geëvalueerd waar, en je zou een tijdje achter die bug kunnen zitten.

Naar mijn mening is dit een heel, heel goede verklaring voor het uitvoeren van dergelijke vergelijkingen vooral in dynamisch getypte talen zoals PHP en JavaScript.

Ongeacht of je het eens bent met deze aanpak of niet, het is onderdeel van de standaard en jij zijn gaan zien gebruikt door WordPress kern, thema's, plug-ins, artikelen en meer.

Daarom raad ik aan om te beginnen met de implementatie in je eigen werk.


Conclusie

Zoals ik in het begin al zei, zou deze specifieke post veel eenvoudiger en eenvoudiger zijn dan sommige van de andere informatie die we tot nu toe in de serie hebben behandeld.

Op dit moment hebben we slechts één belangrijk onderwerp te behandelen: databasequery's.

Daarna zullen we een overzicht geven van alle onderwerpen die we in deze serie hebben beschreven om de principes samen te vatten die we hebben beschreven in de coderingsnormen.

Maar eerst, op Database Queries.