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

<Callout type="info" title="בינה מלאכותית כשותף לתכנות">
בינה מלאכותית מצטיינת ביצירת קוד, איתור באגים ותיעוד—אך תמיד יש לבדוק קוד שנוצר לאבטחה, נכונות ותחזוקתיות. לעולם אל תפרסו קוד של בינה מלאכותית ללא בדיקות.
</Callout>

## יצירת קוד

### עשה ואל תעשה: פרומפטים לקוד

<Compare 
  before={{ label: "❌ בקשה מעורפלת", content: "כתוב פונקציה לאימות אימיילים." }}
  after={{ label: "✓ מפרט מלא", content: "כתוב פונקציית Python שמאמתת כתובות אימייל.\n\nקלט: מחרוזת (אימייל פוטנציאלי)\nפלט: tuple[bool, str | None] - (is_valid, error_message)\nטפל ב: מחרוזת ריקה, None, תווי unicode\nהשתמש ב-regex, כלול type hints ו-docstring." }}
/>

### יצירת פונקציות

<TryIt compact prompt={`כתוב פונקציית \${language:Python} ש\${description:מאמתת כתובות אימייל}.

דרישות:
- קלט: \${inputTypes:מחרוזת (אימייל פוטנציאלי)}
- פלט: \${outputType:ערך בוליאני והודעת שגיאה אופציונלית}
- טפל במקרי קצה: \${edgeCases:מחרוזת ריקה, None, תווי unicode}
- ביצועים: \${performance:רגילים}

כלול:
- Type hints/annotations
- Docstring עם דוגמאות
- אימות קלט
- טיפול בשגיאות`} />

### יצירת מחלקות/מודולים

<TryIt compact prompt={`צור מחלקת \${language:Python} עבור \${purpose:ניהול סשנים של משתמשים}.

תכנון המחלקה:
- שם: \${className:SessionManager}
- אחריות: \${responsibility:טיפול במחזור החיים של סשן משתמש}
- מאפיינים: \${properties:session_id, user_id, created_at, expires_at}
- מתודות: \${methods:create(), validate(), refresh(), destroy()}

דרישות:
- עקוב אחרי דפוס \${designPattern:Singleton}
- כלול אנקפסולציה נאותה
- הוסף docstrings מקיפים
- כלול דוגמת שימוש

בדיקות:
- כלול שלד לבדיקות יחידה`} />

### יצירת נקודת קצה API

<TryIt compact prompt={`צור נקודת קצה REST API עבור \${resource:פרופילי משתמשים}.

Framework: \${framework:FastAPI}
Method: \${method:GET}
Path: \${path:/api/users/{id}}

בקשה:
- Headers: \${headers:Authorization Bearer token}
- Body schema: \${bodySchema:לא רלוונטי ל-GET}
- Query params: \${queryParams:include_posts (boolean)}

תגובה:
- הצלחה: \${successResponse:200 עם אובייקט משתמש}
- שגיאות: \${errorResponses:401 Unauthorized, 404 Not Found}

כלול:
- אימות קלט
- בדיקת אימות
- טיפול בשגיאות
- התחשבות בהגבלת קצב`} />

## איתור באגים

<Callout type="tip" title="עקרון איתור באגים">
תמיד כללו את **ההתנהגות הצפויה**, **ההתנהגות בפועל**, ו**הודעת השגיאה** (אם יש). ככל שתספקו יותר הקשר, כך הבינה המלאכותית תוכל לזהות את שורש הבעיה מהר יותר.
</Callout>

### ניתוח באגים

<TryIt compact prompt={`בצע דיבאג לקוד הזה. הוא אמור \${expectedBehavior:להחזיר את סכום כל המספרים} אבל במקום זאת \${actualBehavior:מחזיר 0 לכל הקלטים}.

קוד:
\${code:הדבק את הקוד שלך כאן}

הודעת שגיאה (אם יש):
\${error:אין}

שלבים לדיבאג:
1. זהה מה הקוד מנסה לעשות
2. עקוב אחרי הביצוע עם הקלט הנתון
3. מצא היכן ההתנהגות הצפויה והפועלת מתפצלות
4. הסבר את שורש הבעיה
5. ספק את התיקון עם הסבר`} />

### פירוש הודעות שגיאה

<TryIt compact prompt={`הסבר את השגיאה הזו ואיך לתקן אותה:

שגיאה:
\${errorMessage:הדבק הודעת שגיאה או stack trace כאן}

הקשר:
- שפה/Framework: \${framework:Python 3.11}
- מה ניסיתי לעשות: \${action:קריאת קובץ JSON}
- קוד רלוונטי: \${codeSnippet:הדבק קוד רלוונטי}

ספק:
1. הסבר בשפה פשוטה של השגיאה
2. שורש הבעיה
3. תיקון צעד אחר צעד
4. איך למנוע זאת בעתיד`} />

### דיבאג ביצועים

<TryIt compact prompt={`הקוד הזה איטי. נתח ובצע אופטימיזציה:

קוד:
\${code:הדבק את הקוד שלך כאן}

ביצועים נוכחיים: \${currentPerformance:לוקח 30 שניות ל-1000 פריטים}
ביצועים יעד: \${targetPerformance:מתחת ל-5 שניות}
מגבלות: \${constraints:מגבלת זיכרון 512MB}

ספק:
1. זהה צווארי בקבוק
2. הסבר למה כל אחד איטי
3. הצע אופטימיזציות (מדורגות לפי השפעה)
4. הצג קוד מאופטם
5. העריך את השיפור`} />

## סקירת קוד

### עשה ואל תעשה: פרומפטים לסקירת קוד

<Compare 
  before={{ label: "❌ בקשה כללית", content: "סקור את הקוד הזה." }}
  after={{ label: "✓ קריטריונים ספציפיים", content: "סקור את הקוד הזה עבור pull request.\n\nבדוק:\n1. נכונות: באגים, שגיאות לוגיות, מקרי קצה\n2. אבטחה: סיכוני injection, בעיות אימות\n3. ביצועים: שאילתות N+1, דליפות זיכרון\n4. תחזוקתיות: שמות, מורכבות\n\nפורמט: 🔴 קריטי / 🟡 חשוב / 🟢 הצעה" }}
/>

### סקירה מקיפה

<TryIt compact prompt={`סקור את הקוד הזה עבור pull request.

קוד:
\${code:הדבק את הקוד שלך כאן}

סקור עבור:
1. **נכונות**: באגים, שגיאות לוגיות, מקרי קצה
2. **אבטחה**: פגיעויות, סיכוני injection, בעיות אימות
3. **ביצועים**: חוסר יעילות, שאילתות N+1, דליפות זיכרון
4. **תחזוקתיות**: קריאות, שמות, מורכבות
5. **שיטות עבודה מומלצות**: מוסכמות \${framework:Python/Django}

פרמט את הסקירה שלך כ:
🔴 קריטי: חובה לתקן לפני מיזוג
🟡 חשוב: כדאי לתקן
🟢 הצעה: נחמד שיהיה
💭 שאלה: נדרש הבהרה`} />

### סקירת אבטחה

<TryIt compact prompt={`בצע סקירת אבטחה לקוד הזה:

קוד:
\${code:הדבק את הקוד שלך כאן}

בדוק עבור:
- [ ] פגיעויות Injection (SQL, XSS, command)
- [ ] פגמים באימות/הרשאה
- [ ] חשיפת מידע רגיש
- [ ] תלויות לא מאובטחות
- [ ] בעיות קריפטוגרפיות
- [ ] פערים באימות קלט
- [ ] טיפול בשגיאות שחושף מידע

לכל ממצא:
- חומרה: קריטי/גבוה/בינוני/נמוך
- מיקום: מספר שורה או פונקציה
- בעיה: תיאור
- ניצול: איך ניתן לתקוף
- תיקון: המלצה לתיקון`} />

## שיפור קוד

### זיהוי ריחות קוד

<TryIt compact prompt={`נתח את הקוד הזה עבור ריחות קוד והזדמנויות לשיפור:

קוד:
\${code:הדבק את הקוד שלך כאן}

זהה:
1. מתודות ארוכות (הצע חילוץ)
2. קוד כפול (הצע שיפורי DRY)
3. תנאים מורכבים (הצע פישוט)
4. שמות גרועים (הצע שמות טובים יותר)
5. צימוד הדוק (הצע הפרדה)

לכל בעיה, הצג קוד לפני/אחרי.`} />

### יישום דפוסי עיצוב

<TryIt compact prompt={`שפר את הקוד הזה באמצעות דפוס \${patternName:Factory}.

קוד נוכחי:
\${code:הדבק את הקוד שלך כאן}

מטרות:
- \${whyPattern:הפרדת יצירת אובייקטים מהשימוש}
- \${benefits:בדיקות והרחבה קלים יותר}

ספק:
1. הסבר על הדפוס
2. איך הוא מתאים כאן
3. קוד משופר
4. שיקולים ופשרות`} />

## בדיקות

### יצירת בדיקות יחידה

<TryIt compact prompt={`כתוב בדיקות יחידה לפונקציה הזו:

פונקציה:
\${code:הדבק את הפונקציה שלך כאן}

Testing framework: \${testFramework:pytest}

כסה:
- מסלול רגיל (קלטים נורמליים)
- מקרי קצה (ריק, null, ערכי גבול)
- מקרי שגיאה (קלטים לא תקינים)
- \${specificScenarios:גישה מקבילית, קלטים גדולים}

פורמט: דפוס Arrange-Act-Assert
כלול: שמות בדיקה תיאוריים`} />

### יצירת מקרי בדיקה

<TryIt compact prompt={`צור מקרי בדיקה לתכונה הזו:

תכונה: \${featureDescription:הרשמת משתמש עם אימות אימייל}
קריטריונים לקבלה: \${acceptanceCriteria:משתמש יכול להירשם, מקבל אימייל, יכול לאמת חשבון}

ספק מקרי בדיקה בפורמט הזה:

| מזהה | תרחיש | בהינתן | כאשר | אז | עדיפות |
|------|-------|--------|------|-------|--------|
| TC01 | ... | ... | ... | ... | גבוהה |`} />

## ארכיטקטורה ועיצוב

### עיצוב מערכת

<TryIt compact prompt={`תכנן מערכת עבור \${requirement:אפליקציית צ'אט בזמן אמת}.

מגבלות:
- עומס צפוי: \${expectedLoad:10,000 משתמשים בו-זמנית}
- דרישות השהיה: \${latency:< 100ms למסירת הודעה}
- זמינות: \${availability:99.9%}
- תקציב: \${budget:בינוני, העדפה לקוד פתוח}

ספק:
1. תרשים ארכיטקטורה ברמה גבוהה (ASCII/טקסט)
2. תיאורי רכיבים
3. זרימת נתונים
4. בחירות טכנולוגיות עם נימוקים
5. אסטרטגיית סקיילינג
6. פשרות ואלטרנטיבות שנשקלו`} />

### עיצוב סכמת מסד נתונים

<TryIt compact prompt={`תכנן סכמת מסד נתונים עבור \${application:פלטפורמת מסחר אלקטרוני}.

דרישות:
- \${feature1:חשבונות משתמשים עם פרופילים וכתובות}
- \${feature2:קטלוג מוצרים עם קטגוריות וריאציות}
- \${feature3:הזמנות עם פריטי שורה ומעקב תשלומים}

ספק:
1. תיאור ישויות וקשרים
2. הגדרות טבלאות עם עמודות וסוגים
3. אינדקסים לשאילתות נפוצות
4. קשרי מפתח זר
5. שאילתות לדוגמה לפעולות מפתח`} />

## יצירת תיעוד

### תיעוד API

<TryIt compact prompt={`צור תיעוד API מהקוד הזה:

קוד:
\${code:הדבק את קוד נקודת הקצה שלך כאן}

פורמט: \${format:OpenAPI/Swagger YAML}

כלול:
- תיאור נקודת קצה
- סכמות בקשה/תגובה
- דוגמאות בקשות/תגובות
- קודי שגיאה
- דרישות אימות`} />

### תיעוד בתוך הקוד

<TryIt compact prompt={`הוסף תיעוד מקיף לקוד הזה:

קוד:
\${code:הדבק את הקוד שלך כאן}

הוסף:
- Docstring לקובץ/מודול (מטרה, שימוש)
- Docstrings לפונקציות/מתודות (פרמטרים, ערכי החזרה, חריגות, דוגמאות)
- הערות inline ללוגיקה מורכבת בלבד
- Type hints אם חסרים

סגנון: \${docStyle:Google}`} />

## תבניות פרומפט מ-prompts.chat

### פעל כמפתח בכיר

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

### פעל כסוקר קוד

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

### פעל כארכיטקט תוכנה

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

## אינטגרציה בתהליך הפיתוח

### יצירת הודעות commit

<TryIt compact prompt={`צור הודעת commit לשינויים האלה:

Diff:
\${diff:הדבק git diff כאן}

פורמט: Conventional Commits
סוג: \${commitType:feat}

ספק:
- שורת נושא (מקסימום 50 תווים, במצב ציווי)
- גוף (מה ולמה, שבירת שורות ב-72 תווים)
- כותרת תחתונה (הפניות ל-issues אם רלוונטי)`} />

### יצירת תיאור PR

<TryIt compact prompt={`צור תיאור pull request:

שינויים:
\${changes:רשום את השינויים שלך או הדבק סיכום diff}

תבנית:
## סיכום
תיאור קצר של השינויים

## שינויים שבוצעו
- שינוי 1
- שינוי 2

## בדיקות
- [ ] בדיקות יחידה נוספו/עודכנו
- [ ] בדיקה ידנית הושלמה

## צילומי מסך (אם שינויי UI)
placeholder

## Issues קשורים
סוגר #\${issueNumber:123}`} />

## סיכום

<Callout type="tip" title="טכניקות מפתח">
כללו הקשר מלא (שפה, framework, מגבלות), ציינו דרישות במדויק, בקשו פורמטי פלט ספציפיים, בקשו הסברים לצד הקוד, וכללו מקרי קצה לטיפול.
</Callout>

<Quiz 
  question="מהו האלמנט החשוב ביותר לכלול כשמבקשים מבינה מלאכותית לבצע דיבאג לקוד?"
  options={[
    "שפת התכנות בלבד",
    "התנהגות צפויה, התנהגות בפועל, והודעת שגיאה",
    "רק קטע הקוד",
    "שם הקובץ"
  ]}
  correctIndex={1}
  explanation="דיבאג דורש הקשר: מה אמור לקרות מול מה קורה בפועל. הודעות שגיאה ו-stack traces עוזרים לבינה המלאכותית לאתר את הבעיה המדויקת במהירות."
/>

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