דלג לתוכן הראשי

דוגמה מינימלית הניתנת לשחזור (MRE)

June 27, 2026 ·

glossary programming debugging

בקצרה

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

ידוע גם בשם reprex MCVE MWE SSCCE

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

אותו רעיון, ארבעה שמות

תיתקלו במושג תחת ראשי תיבות שונים, תלוי בקהילה. כולם מתכוונים לאותו דבר:

  • reprex – נפוץ בעולם של R ו-tidyverse (מתוך החבילה reprex).
  • MCVE – Minimal, Complete, and Verifiable Example, המונח ש-Stack Overflow הפיץ.
  • MWE – Minimal Working Example, בשימוש נרחב בחוגי LaTeX ו-TeX.
  • SSCCE – Short, Self-Contained, Correct (Compilable) Example, ותיק בקהילת Java.

אם מישהו מבקש מכם אחד מאלה, הוא רוצה את אותו הדבר: את קטע הקוד הרץ הקצר ביותר שמראה את הבאג.

לפני

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

אף אחד לא יכול להריץ 600 שורות שקשורות לנתונים ולהרשאות שאין לו. אין דרך לראות את הכשל, אז אין דרך לעזור.

אחרי

הסקריפט הזה, באורך 12 שורות, משחזר את הקריסה ב-Python 3.12. הוא בונה DataFrame בן 3 שורות בתוך הקוד (ללא קובץ חיצוני) וזורק KeyError: 'price' בשורה האחרונה. ציפיתי שזה ידפיס את הסכום הכולל. מה אני מפספס?

import pandas as pd
df = pd.DataFrame({"item": ["a", "b", "c"], "cost": [1, 2, 3]})
print(df["price"].sum())  # KeyError here

עכשיו כל אחד יכול להדביק את זה, להריץ ולראות את השגיאה המדויקת תוך שניות. התיקון (העמודה היא cost, לא price) ברור ברגע שהדוגמה ניתנת להרצה.

איך בונים אחת

  1. התחילו מאפס. העתיקו את הקוד הכושל לקובץ חדש וריק.
  2. מחקו כל מה שלא קשור עד שמחיקת שורה אחת נוספת תגרום לשגיאה להיעלם.
  3. שלבו את הנתונים בתוך הקוד. החליפו קבצים, מסדי נתונים וסודות בכמה שורות קשיחות.
  4. הריצו את זה בעצמכם בסביבה נקייה כדי לוודא שזה עדיין נכשל באותו אופן.
  5. ציינו את ההתנהגות הצפויה לעומת בפועל ואת הגרסאות שלכם.

כשאתם מדווחים על באג ולא שואלים שאלת “איך עושים”, שתלו את ה-MRE שלכם ישירות בתבנית דיווח הבאג – השדות “שלבים לשחזור” ו"סביבה" בנויים בדיוק בשביל זה.

להדרכה המלאה על שאלות טכניות, ראו את המדריך שלנו על שאילת שאלות טובות ב-Stack Overflow.

שלח משוב