✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Refaktoryzacja wtyczek WordPress: mały przykład

22

Jednym ze sposobów, w jaki powstają wtyczki do WordPressa, jest to, że, przynajmniej w moim przypadku, zaczynają się jako zbiór funkcji służących do pomocy w określonym celu dla danego projektu. Od tego momentu myślisz „Hej, może ktoś inny uzna to za przydatne".

Przynajmniej takie było moje doświadczenie częściej niż nie.

Ale chodzi o to, że zanim wypuścisz go, aby inni mogli go wypróbować, chcesz przejść przez proces czyszczenia kodu. Nie mówię też o refaktoryzacji wtyczek do WordPressa – przynajmniej jeszcze nie.

Mówię o wzięciu kodu, przekształceniu go w coś, co będzie działać jako wtyczka do WordPressa, a następnie ewentualnej refaktoryzacji kodu.

Refaktoryzacja wtyczek WordPress

Przejście przez cały proces refaktoryzacji wtyczek WordPress – nie mówiąc już o pojedynczej wtyczce WordPress – może być żmudne, ale udostępnienie sposobu refaktoryzacji części wtyczki jest czymś, co jest wykonalne.

Więc użyję przykładu tego, jak ostatnio czegoś używałem (z kodem trochę abstrahowanym, aby nie zawracać sobie głowy szczegółowymi informacjami na temat danego projektu).

Wykres idealnego wyjścia opcji.

Jednak zanim to zrobię, myślę, że ważne jest, aby udostępnić mój proces może różnić się – lub prawdopodobnie – różni się od twojego (ponieważ wielu z nas ma inne procesy).

  1. Zaprojektuj komponent (tak, nawet pełną wtyczkę) w notatniku,
  2. Wymyśl listę kontrolną przypadków użycia, w których powinien przejść i kiedy powinien się nie udać,
  3. Napisz, jakie dane są potrzebne, jak są potrzebne, a kiedy należy je zignorować
  4. Konwertuj wszystkie powyższe na kod.

Oczywiście nie konwertuję tego wszystkiego dosłownie na kod, ale masz pomysł. Być może najbardziej zwięzły sposób ujmowania tego jest taki:

  • Zacznij od długiej metody, która służy idealnemu przypadkowi użycia. Następnie zrefaktoryzuj ten kod, aby funkcje były mniejsze i uwzględnij przypadki, w których wynik nie powiedzie się.

Powiedziawszy to, oto jak może wyglądać kod.

1 Pisanie dla idealnego przypadku użycia

W tym przykładzie idealnym przypadkiem użycia jest sytuacja, gdy użytkownik ładuje opcje, opcje są obecne, a następnie musi wykonać akcję, jeśli opcje mają określone wartości.

<?php

private function load_dates() {

    $options        = get_option( 'acme_date_options' );
    $event_settings = $options['event'];

    $import    = $event_settings['import'];
    $post_type = $event_settings['post-type'];

    if (( 0 === strcmp( 'yes', $import)) && (0 === strcmp( 'events', $post_type) )) {
        // This is where you take whatever action you want.
    }
}

Ta część powinna być łatwa do odczytania, ale nie uwzględnia niczego poza idealną ścieżką w kodzie.

2 Zdobądź trochę defensywy

Następnie lubię się upewnić, że opcje są ustawione, zanim spróbuję je przeczytać. W niektórych przypadkach możesz chcieć wyświetlić powiadomienie, zgłosić wyjątek lub informacje dziennika.

W tym przykładzie po prostu wrócę, ponieważ jest łatwy do odczytania i można go najłatwiej dostosować do użytku.

<?php

private function load_dates() {

    $options = get_option( 'acme_date_options' );
    if (! isset( $options['event'])) {
            return;
    }

    $event_settings = $options['event'];
    if (! isset( $event_settings['import']) ||! isset( $event_settings['post-type'])) {
        return;
    }

    $import    = $event_settings['import'];
    $post_type = $event_settings['post-type'];

    if (( 0 === strcmp( 'yes', $import)) && (0 === strcmp( 'events', $post_type) )) {
        // This is where you take whatever action you want.
    }
}

Więc to obsługuje opcje, ale co z przypadkiem, gdy opcje są ustawione, ale nie mają oczekiwanych wartości? Oznacza to, że musimy również zweryfikować, czy to robią. A jeśli nie, zignoruj ​​je, wróć, zarejestruj błąd, zgłoś wyjątek i tak dalej.

Wiesz: to samo, co powyżej. Z wyjątkiem tego, że w tym przypadku nie podejmę żadnych działań, chyba że kod zawiera idealną informację.

3 Trochę przydługie

W tym momencie metoda staje się nieco dłuższa i trudniejsza do odczytania. Oczywiście, jeśli jesteś doświadczonym programistą, możesz stwierdzić, że „To jest kod, to nie jest angielski”, ale dlaczego nie dążyć do tego, aby trochę łatwiej było go śledzić?

Dodatkowo ułatwia to testowanie. Ale to wykracza poza zakres tego postu. Weź ocenę opcji jako pierwszy przykład kodu.

  1. Jest to coś, co można owinąć w jego funkcję, która nie tylko izoluje to sprawdzenie, ale także sprawia, że ​​wynikowe wywołanie jest nieco łatwiejsze.
  2. Następnie weź drugi blok kodu, który sprawdza idealne wartości opcji. Można to również wyabstrahować z tych samych powodów powyżej.
  3. Na koniec skonfiguruj funkcję, aby upewnić się, że oczekiwane wartości są ustawione dla każdej z określonych wartości :
<?php

private function has_valid_option( $option) {
  return isset( $option );
}

private function has_valid_values( $value1, $value2) {
  return! (isset( $value1) && isset( $value2) );
}

private function can_import_data( $value1, $value2) {

    return (0 === strcmp( 'yes', $value1)) && (0 === strcmp( 'events', $value2) );
}

Więc teraz masz dwie mniejsze metody, które zawierają tę samą kontrolę, którą robiłeś.

4 Ostateczna funkcja

W tym momencie ostateczna funkcja jest znacznie łatwiejsza do odczytania, ponieważ ma dwie funkcje pomocnicze, które obejmują ich obowiązki, podczas gdy ta powraca do oceny idealnej ścieżki w kodzie:

<?php

private function load_dates() {

    $options = get_option( 'acme_date_options' );
    if (! $this->has_valid_option( $options)) {
        return;
    }

    $event_settings = $options['event'];
    if (! $this->has_valid_values( $event_settings['import'], $event_settings['post-type'])) {
        return;
    }

    $import    = $event_settings['import'];
    $post_type = $event_settings['post-type'];

    if ($this->can_import_data( $import, $post_type)) {
        // This is where you take whatever action you want.
    }
}

Dość powiedzieć, że jeśli chodzi o refaktoryzację wtyczek do WordPressa, to tylko jeden przykład, jak zrobić tylko część tego. Ale to początek, prawda?

Całe wtyczki?

Wiem, prawda? Refaktoryzacja wtyczek WordPress to nie żart. Ale jeśli zaczniesz od małych funkcji takich jak ta i stopniowo będziesz poruszać się po bazie kodu, stanie się to łatwiejsze.

A jeśli spędzisz czas na planowaniu projektu od samego początku, możesz zaoszczędzić dużo czasu na cofaniu się i refaktoryzacji tego rodzaju rzeczy.

Źródło nagrywania: tommcfarlin.com

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów