WordPress kodningsstandarder Ternary Operator och Yoda villkor

Vid denna tidpunkt i serien har vi täckt mycket av marken. Hittills har vi diskuterat följande ämnen:

  • Namngivna konventioner och funktionsargument
  • Användningen av enkla citat och dubbla citat
  • Inryckning, utrymmeanvändning och bakomliggande utrymmen
  • Brace Style, Regular Expressions och PHP Tags

Massor av saker, rätt?

I den här artikeln trodde jag att vi skulle ta det lite lättare innan vi hoppade in i det sista ämnet. Som sådan kommer vi att täcka två riktigt enkla ämnen (som ofta antingen ignoreras eller är överkomplicerade).

Specifikt kommer vi att prata om den ternära operatören och vi ska prata om Yoda-förhållandena.


Ett ord om WordPress Conditionals

När det gäller att skriva WordPress-baserad kod, säger kodningsstandarderna strikt att vi först bör sikta på läsbarhet. Strax från Codex:

I allmänhet är läsbarhet viktigare än smarthet eller kortfattadhet.

Men där är lite nyans för detta. Vissa utvecklare anser att den ternära operatören är lite i strid med den här principen, särskilt för att det ännu är ett annat sätt att skriva en om annat uttalande, och om utvecklaren inte är bekant med att skriva eller läsa den ternära operatören är det i strid med denna princip.

Vi tar en titt på det här djupare på ett ögonblick.


Ternary Operator

Först för de som inte är bekanta är den ternära operatören ett förenklat sätt att skriva en om annat Villkorligt uttalande. Det används vanligtvis endast när den villkorliga är den enklaste formen och endast när det finns en singel om och en singel annan blockera.

Låt oss till exempel säga att vi har en sådan villkor:

 $ uses_gasoline = null; om ("hybrid" == $ car_type) $ uses_gasoline = false;  annat $ uses_gasoline = true;  echo $ uses_gasoline;

Visst, det här är lite av ett konstruerat exempel, men du får poängen. När allt kommer omkring försöker jag bara visa hur man konverterar en villkorlig sådan till en form som används av den ternära operatören.

I enlighet med exemplet ovan kan du göra följande:

 $ uses_gasoline = 'hybrid' == $ car_type? falsk sann; echo $ uses_gasoline;

Vettigt? En viktig sak att märka: den ternära operatören testar för sann (snarare än falsk, uppenbarligen).

För vad det är värt, tycker jag att det här är mycket som att läsa en mening. Den första klausulen ställer en fråga (uppenbarligen skiljdad av ett frågetecken), med de två möjliga svaren som returneras baserat på utvärderingen av villkorade.

där är en försiktighet för kontroll av sant som alla är dokumenterade i Codex:

Ett undantag skulle användas ! tömma(), som testning för falskt här är vanligtvis mer intuitivt.

Enligt min erfarenhet har det varit den enda gången att använda en negativ utvärdering i det villkorade. Alla gånger som jag har spenderat att arbeta med den ternära operatören, har jag funnit att testning för falsk gör ofta den ternära utvärderingen svårare att dechiffrera.

Dessutom har jag funnit att det är bäst att ge en enda utvärdering och kanske två utvärderingar under mycket enkla och tydliga omständigheter.

Utöver det, det är hur du kan använda den ternära operatören i ditt dagliga WordPress-arbete


Yoda-förhållanden

Om du följde noga följer du att jag gjorde något som de flesta programmeringsspråk (eller till och med PHP-baserade plattformar utanför WordPress) inte regelbundet gör:

Den villkorliga jämförelsen gjordes genom att jämföra värdet till variabeln. inte tvärtom.

Traditionellt skulle vi se något så här:

 $ uses_gasoline = null; om ($ car_type == 'hybrid') $ uses_gasoline = false;  annat $ uses_gasoline = true;  echo $ uses_gasoline;

Och motsvarande ternära operatör skulle se något ut så här:

 $ uses_gasoline = $ car_type == 'hybrid'? falsk sann; echo $ uses_gasoline;

Så om majoriteten av programmeringsspråk och plattformar inte använd Yoda villkor, varför gör WordPress?

Enligt Codex:

I det ovanstående exemplet, om du släpper ut ett jämlikt tecken (erkänner det, sker det till och med den mest erfarna av oss) får du ett parse-fel, eftersom du inte kan tilldela en konstant som Sann. Om uttalandet var tvärtom ($ the_force = true), Uppdraget skulle vara helt giltigt, återvändande 1, orsakar if-uttalandet att utvärdera till Sann, och du kan jaga det buget ett tag.

Enligt min åsikt är det här en riktigt bra förklaring till att göra jämförelser så här speciellt inom dynamiskt skrivna språk som PHP och JavaScript.

Oavsett om du håller med om detta tillvägagångssätt eller inte, det är en del av standarden och du är kommer att se detta använda via WordPress kärna, teman, plugins, artiklar och mycket mer.

I detta syfte rekommenderar jag starkt att börja implementera i ditt eget arbete.


Slutsats

Som jag nämnde i början skulle denna post vara mycket enklare och enklare än några av det andra materialet som vi har täckt i serien så långt.

Vid den här tiden har vi bara ett större ämne att täcka: Databasfrågor.

Därefter gör vi en översyn av alla de ämnen som vi har skisserat i hela serien för att sammanfatta de principer vi har beskrivit från kodningsstandarderna.

Men först på databasfrågor.