לדלג לתוכן

2 - פרויקט מסכם - פרויקט

פרויקט סיכום ספריית עיבוד עם מימושים מתחלפים

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

הגדירו Record בבעלות עם שם וערך מספרי. הגדירו trait בשם Policy שמחליטה אם רשומה מתקבלת ומחזירה ציון עבורה. ספקו שני מימושים: סף מינימלי ומכפלה במשקל קבוע עם בדיקת גלישה. השגיאות צריכות להיות מובנות ולא להיעלם לתוך None כללי.

כתבו מנוע גנרי שמקבל השאלה לפרוסת רשומות ומדיניות. הוסיפו ממשק שני שמאפשר בחירת מדיניות בזמן ריצה דרך dyn. נסו לשתף את האלגוריתם עצמו באמצעות חסם מתאים, במקום לשכפל את לולאת העיבוד.

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

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

הגישו בדיקות חוזה הפועלות מול שני המימושים, בדיקות גלישה ודוגמה שמדגימה את הבעלות. הוסיפו מסמך קצר שמסביר מדוע גבול דינמי נבחר בתוכנית הפקודה, היכן הגנריות מועילה, ואילו שינויי API ישברו משתמש קיים.

תנאי קבלה

האלגוריתם צריך להחזיר שגיאה במקום ציון שגלש. כשל בבניית מדיניות חדשה חייב להשאיר את הישנה תקפה. תוצאת העיבוד המושאלת אינה יכולה לברוח מעבר לחיי המקור. הקוד נבנה ללא unsafe, והמאקרו נבדק עם ביטויים בעלי תופעות לוואי.