✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

Über das Schreiben von cleverem Code mit Arrays in WordPress

18

Ich weiß nicht, ob es einen Standard für „cleveren Code“ gibt, aber ich denke, wenn Sie Programmierern verschiedene Codebeispiele zeigen würden, könnten sie es erkennen, wenn sie es sehen.

Und es gab eine Zeit in meiner Karriere, in der ich sehr daran interessiert war, cleveren Code zu schreiben. Aber je älter ich werde und je mehr Arbeit ich in die Wartung von Projekten stecke, desto weniger mache ich mir Sorgen um das Schreiben von cleverem Code und desto mehr interessiere ich mich dafür, Code zu schreiben, der klar und lesbar ist und daher gewartet werden kann.

Cleverer Code ist für die Vögel. Verzeihen Sie diese dummen Wortspiele.

Wenn wir mit WordPress arbeiten, haben wir wahrscheinlich viel mit Arrays zu tun, insbesondere angesichts der Tatsache, dass so viele der Interna von WordPress darauf aufbauen (ja, es gibt auch einige Objekte, aber Arrays sind allgegenwärtig).

Wie sieht dann cleverer Code mit Arrays in WordPress im Vergleich zu weniger cleverem Code aus? Und sollten wir es außerdem vermeiden, schlauen Code zu schreiben?

Cleverer Code mit Arrays

Array-Funktionen sind wohl eine der größten Funktionen in PHP.

Natürlich scheint das Schreiben von cleverem Code mit WordPress teilweise und teilweise in die Umgebung zu passen, oder? Ich sage nicht, dass es überhaupt schlecht ist. Ich sage nur, wenn Sie Funktionen im globalen Namespace haben, die mit Arrays arbeiten, die Arrays zurückgeben, ist es viel zu einfach, verschachtelte Aufrufe zu schreiben, die letztendlich etwas mehr mentale Arbeit erfordern, um zu analysieren, was der Code tut.

Klar, darüber zu schreiben ist das eine, aber vielleicht macht es Sinn, sich mal ein Beispiel anzuschauen, wie cleverer Code mit WordPress aussehen könnte und wie er dann umgestaltet werden kann.

Ein Beispiel

Angenommen, wir haben einen Beitrag und aktualisieren den Beitragsauszug, sodass ein Name, der im Auszug enthalten ist, entfernt werden muss. Wann dies passiert, ist nicht unbedingt wichtig (obwohl delete_user nicht schwer vorstellbar ist, oder?)

Von Anfang an erhalten wir:

  • die Post-ID,
  • der Name der zu entfernenden Person.

Eine Möglichkeit, dies zu tun, wäre die Verwendung einer Kombination aus array, array_map, explode, array_diff, implode. Alles aus diesem Grund:

  • array, um ein Array der Person zu erstellen (weil es als Array später benötigt wird),
  • array_map zum Trimmen von Leerraum nach dem Auflösen des Ausschnitts in ein Array,
  • array_diff zum Finden der Strings, die nach dem Entfernen eines Namens übrig bleiben,
  • und implodieren, um das Ergebnis wieder in eine Zeichenfolge für post_excerpt umzuwandeln.

Okay, nachdem das gesagt wurde, hier ist ein Beispiel dafür, wie cleverer Code in WordPress aussehen könnte :

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

Aber es ist viel Verschachtelung, und wir müssen normalerweise von außen nach innen beginnen und wissen, was jede Funktion tut, richtig?

Um es aufzuräumen, müssen wir uns immer noch mit den oben aufgeführten Funktionen befassen, aber wir können die Dinge in leichter lesbare Schritte (zusammen mit Codekommentaren) unterteilen, um es anderen Entwicklern zu erleichtern, sie zu analysieren.

Vielleicht könnte es so aussehen :

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

Nun, ist dies der Weg, es zu tun? Ich weiß nicht. Aber es ist ein Weg, es zu tun. Und es ist eine dieser Situationen, die leichter zu lesen und zu befolgen ist.

Vielleicht ist es nicht das Schreiben von cleverem Code in WordPress, aber ich weiß nicht – und denke auch nicht –, dass das unser Ziel sein sollte.

Sollten wir darauf abzielen, cleveren Code zu schreiben?

Im WordPress-Handbuch heißt es dazu:

Im Allgemeinen ist Lesbarkeit wichtiger als Cleverness oder Kürze.

Und fährt dann fort, ein Beispiel zu geben. An diesem Punkt meiner Karriere stimme ich eher zu:

  • Cleverer Code ist nicht gleich performanter Code,
  • cleverer Code braucht oft länger, um durch mehr mentale Hürden zu springen als ausführlicher Code,
  • Cleverer Code ist daher schwerer zu warten, insbesondere wenn man in eine ältere Codebasis springt.

Schließlich denke ich, dass verschiedene Leute einen Code für cleverer halten als andere, aber es gibt auch Code, den viele von uns als einen Versuch für cleverer halten würden als nicht.

Versuchen Sie letztendlich, Code so zu schreiben, wie Sie ihn schreiben möchten, aber schreiben Sie mit einem anderen Entwickler im Hinterkopf: Wenn Sie sich jemals darüber beschwert haben, dass ein Stück Code auf den ersten Blick schwer zu entziffern ist, ist es wahrscheinlich, dass es schlecht geschrieben wurde oder es war versuchen, schlau zu sein. Seien Sie also nicht der Typ oder das Mädchen, der oder die den Schwarzen Peter an den nächsten Entwickler weitergibt.

Versuche stattdessen, klaren Code zu schreiben und bei Bedarf Kommentare zu verwenden.

Aufnahmequelle: tommcfarlin.com

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen