PHP:
ריפקטורינג

איך לבצע:

בואו ניקח קטע קוד PHP קלאסי ונחיל עליו קסם של ריפקטורינג.

לפני הריפקטורינג, הקוד שלנו עשוי להיראות כך:

function printOrderDetails($order) {
    foreach ($order as $item) {
        echo "Item: " . $item['name'];
        echo " - Price: " . $item['price'];
        echo "<br>";
    }
    
    if (!empty($order)) {
        echo "Total: " . array_sum(array_column($order, 'price'));
    }
}

אך אנו יכולים לרפקטר את הקוד כדי לשפר את בהירותו ומודולריותו:

function printItem($item) {
    echo "Item: {$item['name']} - Price: {$item['price']}<br>";
}

function calculateTotal($order) {
    return array_sum(array_column($order, 'price'));
}

function printOrderDetails(array $order) {
    array_walk($order, 'printItem');

    if (!empty($order)) {
        echo "Total: " . calculateTotal($order);
    }
}

על ידי פיצול הפונקציה printOrderDetails לפונקציות קטנות יותר, הקוד שלנו הופך לקריא יותר וקל יותר לנפות באגים.

צלילה עמוקה

לריפקטורינג יש שורשים בקהילת התכנות של Smalltalk מתחילת שנות ה-90 והתפרסם עוד יותר על ידי הספר המכונן של מרטין פאולר “Refactoring: Improving the Design of Existing Code” (1999). על אף שניתן ליישם ריפקטורינג על כל שפת תכנות, המהות הדינמית של PHP מאפשרת אתגרים והזדמנויות ייחודיים.

חלופות לריפקטורינג עשויות לכלול כתיבה מחדש של קוד, אשר לעיתים קרובות היא סיכונית ודורשת יותר זמן. באקוסיסטם של PHP, כלים כמו PHPStan ו-Rector יכולים לזהות ולבצע אוטומטית פעולות של ריפקטורינג, בהתאמה. מבחינה יישומית, שמירה על ריפקטורינגים קטנים ובדיקה מקיפה באמצעות בדיקות יחידה הם שיטות מפתח להבטיח ריפקטורינג מוצלח ללא הכנסת באגים.

ראו גם