✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

Om att skriva smart kod med arrayer i WordPress

31

Jag vet inte om det finns en standard för vad som anses vara "smart kod", men jag tror att om du skulle visa olika kodexempel för programmerare, skulle de kunna veta det när de ser det.

Och det brukade vara en tid i min karriär då jag var mycket intresserad av att skriva smart kod. Men ju äldre jag blir och ju mer jag jobbar med att underhålla projekt, desto mindre angelägen är jag om att skriva smart kod och desto mer intresserad är jag av att skriva kod som är tydlig och läst och därmed underhålls.

Smart kod är för fåglarna. Ursäkta dessa dumma ordvitsar.

När vi arbetar med WordPress har vi troligen att göra med arrays mycket, särskilt med tanke på att så mycket av WordPresss interna funktioner är byggda på dem (ja, det finns vissa objekt också, men arrays är genomgående).

Hur ser då smart kod med arrayer ut i WordPress kontra mindre smart kod? Och dessutom, ska vi undvika att sikta på att skriva smart kod?

Smart kod med arrayer

Array-funktioner är utan tvekan en av de största uppsättningen funktioner i PHP.

Att skriva smart kod med WordPress verkar naturligtvis passa delvis och delvis med miljön, eller hur? Jag säger inte alls att det är dåligt. Jag säger bara att när du har funktioner i det globala namnutrymmet som fungerar med arrayer som returnerar arrayer, är det alldeles för lätt att skriva kapslade anrop som i slutändan kräver lite mer mentalt arbete för att analysera vad koden gör.

Visst, att skriva om det är en sak, men det kanske är meningsfullt att titta på ett exempel på hur smart kod med WordPress kan se ut och sedan hur den kan omstruktureras.

Ett exempel

Säg till exempel att vi har ett inlägg och att vi uppdaterar inläggsutdraget så att ett namn som finns i utdraget måste tas bort. När detta händer är inte nödvändigtvis viktigt (även om delete_user inte är svårt att föreställa sig, eller hur?)

Från början får vi:

  • inläggets ID,
  • namnet på personen som ska tas bort.

Ett sätt att göra detta skulle vara att använda en kombination av array, array_map, explode, array_diff, implode. Allt av denna anledning:

  • array för att skapa en array av personen (eftersom den, som en array, krävs senare),
  • array_map för att trimma vitt utrymme efter att ha exploderat utdraget till en array,
  • array_diff för att hitta strängarna som finns kvar efter att ett namn tagits bort,
  • och implodera för att bygga om resultatet tillbaka till en sträng för post_excerpt.

Okej, med det sagt, här är ett exempel på hur smart kod i WordPress kan se ut :

<?php

// Get the excerpt from the incoming post.
$post    = get_post( $post_id );
$excerpt = $post->post_excerpt;

/**
 * And we update the post content without the information (and we don't need
 * paragraph tags).
 */
$event_post->post_excerpt = 
  apply_filters( 
    'the_excerpt', 
    implode( ', ', 
      array_diff( 
        array_map( 
          'trim', 
          explode( ',', $excerpt) ), 
      array( $name) ),
    ),
  );

Men det är mycket häckning, och vi måste oftast börja utifrån och in och veta vad varje funktion gör, eller hur?

För att rensa upp det måste vi fortfarande ta itu med funktionerna som listas ovan, men vi kan dela upp saker och ting i enklare att läsa steg (tillsammans med kodkommentarer) för att göra det lättare för en annan utvecklare att analysera.

Kanske kan det se ut så här :

<?php

// Get the excerpt from the incoming post.
$post    = get_post( $post_id );
$excerpt = $post->post_excerpt;

// Remove the name from the array of names in the excerpt.
$to_remove = array( $name );
$names     = array_map( 'trim', explode( ',', $excerpt) );
$result    = array_diff( $names, $to_remove );

// Now creae the new excerpt.
$new_excerpt = implode( ', ', $result );

/**
 * And we update the post content without the information (and we don't need
 * paragraph tags).
 */
$event_post->post_excerpt = apply_filters( 'the_excerpt', $new_excerpt );

Nu, är det här sättet att göra det? jag vet inte. Men det är ett sätt att göra det. Och det är en av de situationer som är lättare att läsa och följa.

Så det kanske inte är att skriva smart kod i WordPress, men jag vet inte – och tror inte – det borde vara målet.

Ska vi sträva efter att skriva smart kod?

WordPress -handboken säger följande:

Generellt sett är läsbarhet viktigare än smarthet eller korthet.

Och fortsätter sedan med att ge ett exempel. Vid denna tidpunkt i min karriär tenderar jag att hålla med:

  • smart kod är inte lika med mer presterande kod,
  • smart kod tar ofta längre tid att hoppa igenom fler mentala ramar än utförlig kod,
  • smart kod är därför svårare att underhålla, särskilt när man hoppar in i en äldre kodbas.

Slutligen tror jag att olika människor kanske anser att viss kod är smartare än andra, men det finns också kod som många av oss skulle anse som ett försök att vara smartare än inte.

I slutändan, sträva efter att skriva kod hur det än är du vill skriva men skriv med en annan utvecklare i åtanke: Om du någonsin har klagat över att en kodbit är svår att tyda vid första anblicken, är det troligt att det var dåligt skrivet eller att det var en försök att vara smart. Så var inte den där killen eller tjejen som skickar pengarna till nästa utvecklare.

Sträva istället efter att skriva tydlig kod och använd kommentarer när det behövs.

Inspelningskälla: tommcfarlin.com

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer