✅ WEB ja WordPressi uudised, teemad, pistikprogrammid. Siin jagame näpunäiteid ja parimaid veebisaidi lahendusi.

Nutika koodi kirjutamine massiividega WordPressis

33

Ma ei tea, kas "tarka koodi" jaoks on olemas standard, kuid ma arvan, et kui näitaksite programmeerijatele erinevaid koodinäidiseid, saaksid nad seda nähes teada.

Ja mu karjääris oli aeg, mil olin kaugelt huvitatud nutika koodi kirjutamisest. Kuid mida vanemaks ma saan ja mida rohkem tööd projektide haldamisel teen, seda vähem olen mures nutika koodi kirjutamise pärast ja seda rohkem huvitan mind selge ja loetava koodi kirjutamise vastu.

Nutikas kood on lindudele. Andke andeks need lollid sõnamängud.

WordPressiga töötades tegeleme tõenäoliselt palju massiividega, eriti arvestades, et nii suur osa WordPressi sisemistest elementidest on üles ehitatud neile (jah, on ka objekte, kuid massiivid on levinud).

Kuidas näeb siis välja nutikas massiividega kood WordPressis võrreldes vähem nutika koodiga? Ja pealegi, kas me peaksime vältima nutika koodi kirjutamist?

Nutikas kood massiividega

Massiivifunktsioonid on vaieldamatult üks suurimaid PHP funktsioonide komplekte.

Loomulikult tundub, et nutika koodi kirjutamine WordPressiga sobib osaliselt ja osaliselt keskkonnaga, eks? Ma ei ütle, et see on üldse halb. Ma lihtsalt ütlen, et kui teil on globaalses nimeruumis funktsioone, mis töötavad massiividega, mis tagastavad massiive, on liiga lihtne kirjutada pesastatud kõnesid, mis nõuavad lõpuks natuke rohkem vaimset tööd, et kood analüüsida, mida kood teeb.

Muidugi on sellest kirjutamine üks asi, kuid võib-olla on mõttekas vaadata näidet selle kohta, milline võiks WordPressi nutikas kood välja näha ja kuidas seda siis ümber kujundada.

Näide

Oletame näiteks, et meil on postitus ja me värskendame postituse väljavõtet, nii et väljavõttes sisalduv nimi tuleb eemaldada. Kui see juhtub, pole see tingimata oluline (kuigi atribuuti delete_user pole raske ette kujutada, eks?)

Algusest peale on meile antud:

  • postituse ID,
  • eemaldatava isiku nimi.

Üks võimalus seda teha oleks kasutada massiivi, massiivi_kaart, plahvatuse, massiivi_diff, implode kombinatsiooni. Kõik sel põhjusel:

  • massiiv isiku massiivi loomiseks (kuna seda on massiivina hiljem vaja),
  • array_map tühiku kärpimiseks pärast väljavõtte massiiviks lõhkamist,
  • array_diff stringide leidmiseks, mis jäävad pärast nime eemaldamist,
  • ja implode, et tulemus uuesti post_excerpti stringiks ehitada.

Olgu, seda öeldes, siin on näide sellest, milline võib WordPressi nutikas kood välja näha :

<?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) ),
    ),
  );

Kuid see on palju pesastamist ja tavaliselt peame alustama väljastpoolt ja teadma, mida iga funktsioon teeb, eks?

Selle puhastamiseks peame siiski tegelema ülaltoodud funktsioonidega, kuid saame jagada asjad hõlpsamini loetavateks sammudeks (koos koodi kommentaaridega), et teisel arendajal oleks lihtsam sõeluda.

Võib-olla võiks see välja näha umbes selline :

<?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 );

Nüüd, kas seda saab teha nii? ma ei tea. Kuid see on viis, kuidas seda teha. Ja see on üks neist olukordadest, mida on lihtsam lugeda ja jälgida.

Nii et võib-olla pole see nutika koodi kirjutamine WordPressis, kuid ma ei tea – ega arva –, et see peaks olema eesmärk.

Kas peaksime püüdma kirjutada nutikat koodi?

WordPressi käsiraamat ütleb järgmist :

Üldiselt on loetavus tähtsam kui nutikus või lühidus.

Ja siis jätkab näite toomisega. Praegusel hetkel olen oma karjääri jooksul nõus:

  • tark kood ei võrdu tõhusama koodiga,
  • nutikal koodil kulub sageli rohkem aega läbi hüppamiseks kui paljusõnaline kood,
  • nutikat koodi on seega raskem hooldada, eriti kui hüpata vanemasse koodibaasi.

Lõpuks arvan, et erinevad inimesed võivad mõnda koodi teistest nutikamaks pidada, kuid on ka koodi, mida paljud meist peavad katseks targemaks kui mitte.

Lõppkokkuvõttes püüdke kirjutada kood nii, nagu soovite kirjutada, kuid kirjutage mõeldes teisele arendajale: kui olete kunagi kurtnud selle üle, et mõnda koodiosa on esmapilgul raske dešifreerida, on tõenäoline, et see oli halvasti kirjutatud või püüdke olla tark. Nii et ärge olge see mees või tüdruk, kes annab vastutuse järgmisele arendajale.

Selle asemel püüdke kirjutada selge kood ja kasutada vajadusel kommentaare.

See veebisait kasutab teie kasutuskogemuse parandamiseks küpsiseid. Eeldame, et olete sellega rahul, kuid saate soovi korral loobuda. Nõustu Loe rohkem