On this page
מערך שיעור: Enums
משך: 1.5 שעות אקדמיות (68 דקות).
מטרת השיעור: הסטודנטים יבינו למה enum עדיף על מספרי-קסם ומחרוזות חופשיות, וישתמשו בו בביטחון.
בסוף השיעור הסטודנטים צריכים: להגדיר enum משלהם, להשתמש בו בהשוואות וב-switch, ולהסביר במילים שלהם למה הוא בטוח יותר ממחרוזת חופשית.
דגש קריטי: התחילו מדוגמת Magic Number אמיתית (status == 1) לפני שמזכירים את המילה enum — זו הבעיה שהוא פותר.
מהלך השיעור
| חלק בשיעור | משך | הערות ודגשים |
|---|---|---|
| פתיחה וחיבור | 5 דקות | הראו קוד עם if (status == 1) — שאלו “מה זה 1?” |
| הבעיה: Magic Number / מחרוזת שברירית | 15 דקות | הראו גם גרסת מחרוזת עם typo (“pendingg”) שלא נתפס |
| הרעיון: enum | 15 דקות | הגדרה, שימוש בהשוואה |
| קוד: switch על enum | 15 דקות | הראו את הקריאות מול שרשרת if/else מקבילה |
| תרגול מודרך | 15 דקות | תרגיל 1+2 |
| שאלות + סיכום | 3 דקות | חיזרו על “קבוצה סגורה, נבדקת בקומפילציה” |
דגשים להעברת השיעור
- אל תעמיקו יותר מדי בערך המספרי הפנימי של
enum— זה פרט מעניין, לא הליבה. הליבה היא: קבוצה סגורה + בדיקת קומפילציה. - אם יש זמן, שווה להראות שניסיון להשתמש בערך שלא קיים ב-
enum(למשלOrderStatus.Refundedשלא הוגדר) פשוט לא מתקמפל — משלים את התמונה מול המחרוזת השברירית.
מושגים
enum — טיפוס שמגדיר קבוצה סגורה וקבועה של ערכים.
Underlying Value — הייצוג המספרי הפנימי של כל ערך ב-enum.
Magic Number — מספר בקוד בלי הקשר ברור, קשה לפענוח.
תרגיל חשיבה
שאלת פתיחה: “יש לכם string status = \"Pending\". חבר לצוות כתב בטעות \"pendingg\" באחד המקומות. מתי תגלו את זה — ומה זה עולה לכם?”
מהלך: הובילו לתובנה: עם מחרוזת חופשית, זה מתגלה רק בזמן ריצה (אם בכלל — יכול פשוט “לא לעבוד” בשקט). עם enum, אותה טעות היא שגיאת קומפילציה — נתפסת לפני שהקוד בכלל רץ.
מה המרצה מראה בסוף: כתבו קוד עם string status ו-typo מכוון באחת ההשוואות — הריצו, והראו שהתוכנית “פשוט לא עושה מה שציפינו” בלי שום שגיאה. אחר כך אותו תרחיש עם enum ואיות שגוי של הערך — שגיאת קומפילציה מיידית וברורה.