• #C,  Design Patterns,  SOLID

    עקרונות SOLID בתכנות מונחה עצמים

    רוברט מרטין (המוכר גם כ- Uncle Bob), האיש שהביא לנו את Clean Code, הגדיר במאמריו ובספריו חמישה עקרונות שנועדו לשפר את התכנון של מערכות תוכנה מונחות עצמים – OOP. חמשת העקרונות האלו עוזרים ליצור תוכנה קלה להבנה, לתחזוקה ולהרחבה. עקרונות אלו נודעו בראשי התיבות: SOLID והם: ________________________________________________________________________________________________________________ Single Responsibility Principle (SRP) יש אומרים שגברים לא יכולים לטפל ביותר מדבר אחד בכל פעם. לא יודע עד כמה זה נכון, אבל בכתיבת קוד, אכן מומלץ שלכל מחלקה תהיה אחריות אחת בלבד. כלומר, כל מחלקה צריכה לטפל בהיבט אחד בלבד של התוכנה ולא יותר מכך. לדוגמא: במקרה זה, מחלקת `Invoice` מטפלת רק בחישוב הסכום הכולל, בעוד ש-`InvoicePrinter` מטפלת בהדפסת החשבונית. טיפ: אם המילה…

  • #C,  Design Patterns

    Osberver – גרסת הבמאי

    טרחתם, עשיתם חזרות, שיננתם את הטקסט ואחרי משהו כמו חמש שניות הבמאי קוטע את הדרמה בדיוק לפני הקטע הטוב ואומר (באנגלית זה נשמע יותר טוב): Don’t call us we’ll call you. אמנם יש בזה משהו מעצבן, אבל מצד שני זה גם הגיוני ויעיל – אתם עצמכם לא רוצים להתקשר שלוש פעמים ביום כדי לבדוק אם יש תשובה, וגם הבמאי לא רוצה להיות עסוק במענה לכל הטלפונים של המועמדים כפול שלוש פעמים ביום. עדיף שהוא יגבש החלטה, וכאשר יש שינוי כלשהו – הוא יעדכן את כל מי שצריך לעדכן. ה- Design pattern שמטפל בבעיה הזו נקרא – Observer. כלומר – צופה. זוהי למעשה מערכת שמבטאת קשר של יחיד לרבים. היחיד הוא…

  • #C,  SOLID

    איך עובד Linq ב- #C

    Linq היא טכנולוגיה המאפשרת לנו לתשאל נתונים בעזרת קוד #C. הכוונה במילה ‘לתשאל’ היא לכך שיש יותר מחמישים אופרטורים המאפשרים למיין, לסנן, לאחד וכו’ נתונים. למשל אם נרצה לקבל מתוך רשימת עובדים את העובדים שהם מנהלי מחלקות, נעשה זאת מן הסתם בעזרת Linq. אז איך Linq עובד? כידוע #C היא שפה סטטית, והטיפוסים (types) צריכים להיות קבועים ומוגדרים. ולכן, אם נרצה למשל ליצור מתודה בשם Where, שתחזיר לנו אובייקט מטיפוס Employee, נצטרך לדאוג לך שמתודת Where מכירה את הטיפוס שלנו. באופן מפתיע אנחנו רואים שLinq תומכת בכל סוגי המשתנים, אפילו אם הרגע הגדרנו אותם. נניח שמיקרוסופט היו יוצרים לנו Interface לצורך הסינונים האלה, ושהInterface הזה מחזיק את כל המתודות הנחוצות,…