Menu
Coddy logo textTech

רפקטורינג של לולאות

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C# של Coddy. שיעור 16 מתוך 66.

שכתוב לולאות יכול לשפר את קריאות הקוד ואת יכולת התחזוקה שלו.

החליפו לולאה מסורתית ב-foreach לשם פשטות:

string[] fruits = { "apple", "banana", "cherry" };

// לפני ארגון הקוד מחדש
for (int i = 0; i < fruits.Length; i++)
{
    Console.WriteLine(fruits[i]);
}

// אחרי ארגון הקוד מחדש
foreach (string fruit in fruits)
{
    Console.WriteLine(fruit);
}

חלצו לוגיקה מורכבת של לולאות לשיטות:

int[] numbers = { 1, 2, 3, 4, 5, 6 };

// לפני ארגון הקוד מחדש
for (int i = 0; i < numbers.Length; i++)
{
    if (numbers[i] % 2 == 0)
    {
        Console.WriteLine($"{numbers[i]} is even");
    }
}

// אחרי ארגון הקוד מחדש באמצעות פונקציית עזר
for (int i = 0; i < numbers.Length; i++)
{
    if (IsEven(numbers[i]))
    {
        Console.WriteLine($"{numbers[i]} is even");
    }
}

// פונקציית עזר
bool IsEven(int number)
{
    return number % 2 == 0;
}

פצלו לולאות גדולות ללולאות קטנות וממוקדות יותר:

int[] data = { 1, 2, 3, 4, 5 };

// לפני: לולאה אחת גדולה שמבצעת כמה פעולות
for (int i = 0; i < data.Length; i++)
{
    // עיבוד הנתונים
    data[i] = data[i] * 2;
    // הדפסת התוצאות
    Console.WriteLine(data[i]);
}

// אחרי: לולאות נפרדות עם מטרות ברורות
// עיבוד הנתונים
for (int i = 0; i < data.Length; i++)
{
    data[i] = data[i] * 2;
}

// הדפסת התוצאות
for (int i = 0; i < data.Length; i++)
{
    Console.WriteLine(data[i]);
}
challenge icon

אתגר

בינוני

צרו מתודה בשם refactorArrayFilter ש:

  1. מקבלת מערך של מספרים שלמים כפרמטר
  2. מממשת שתי גרסאות של קוד שסופרות מספרים שמתחלקים ב־3:
    • מקורית: השתמשו בלולאת for מסורתית עם פקודת if
    • לאחר שכתוב: השתמשו בלולאת foreach כשהלוגיקה מועברת למתודת עזר
  3. מחזירה את הספירה מהגרסה שלאחר השכתוב כמספר שלם

לדוגמה, עבור המערך [3, 4, 6, 7, 9], המתודה אמורה להחזיר 3 כי יש שלושה מספרים (3, 6 ו־9) שמתחלקים ב־3.

הערה: אין צורך להדפיס דבר — רק להחזיר את הספירה כמספר שלם.

נסו בעצמכם

public class RefactorArrayFilter
{
    // ממשו את המתודה refactorArrayFilter
    public static int refactorArrayFilter(int[] numbers)
    {
        // כתבו כאן את הקוד שלכם
        
    }
    
    // ממשו את כל מתודות העזר הנחוצות לכם
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר C# אונליין