# הקדמה — מה נלמד ביחידה הזו🧭 הקדמה

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

## מה הולכים ללמוד בשיעורים הבאים

- **איך כותבים קוד אחד שמתאים לכמה סוגי מידע שונים** — למשל פונקציה אחת שיודעת לעבוד גם עם מספרים וגם עם שמות, במקום לכתוב אותה מחדש לכל סוג. זה נקרא Generics.
- **שני כללים בסיסיים לתכנון נכון** — הראשון אומר שלכל חלק בתוכנית כדאי שיהיה תפקיד אחד וברור בלבד (כדי שיהיה קל להבין מה הוא עושה); השני אומר שצריך שיהיה אפשר להוסיף יכולות חדשות בלי לשנות קוד קיים שכבר עובד. יחד נקראים SRP ו-OCP.
- **שלושה כללים נוספים באותה רוח** — שעוזרים למנוע טעויות עיצוב נפוצות שגורמות לבאגים מוזרים ומפתיעים בהמשך הדרך. יחד עם שני הכללים הקודמים, זו קבוצת חמישה כללים שנקראת בקיצור SOLID.
- **פתרונות מוכנים לבעיות שחוזרות על עצמן** — כמעט כל תוכנה נתקלת באותן בעיות עיצוב בסיסיות, ולאורך השנים מתכנתים גיבשו פתרונות מוכחים להן, כדי שלא תצטרכו "להמציא את הגלגל" בכל פעם מחדש. אלו נקראות תבניות עיצוב (Design Patterns).

## עם מה תצאו מהחלק הזה

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