חזרה
שכפול זול מהפשטה שגויה — האזהרה של סנדי מץ
SiTech AI Team2 წთ. საკითხავი

שכפול זול מהפשטה שגויה — האזהרה של סנדי מץ

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

שכפול זול בהרבה מהפשטה שגויה

בשנת 2014, בכנס RailsConf, הקדישה סנדי מץ קטע קצר בהרצאתה "All the Little Things" לטענה שמהדהדת עד היום בקבוצות פיתוח: שכפול זול בהרבה מהפשטה שגויה. העצה שלה הייתה חדה — עדיף שכפול על פני הפשטה שגויה. התגובה הייתה כה עזה, עד שהיא הרחיבה את הרעיון למאמר: הטקסט נכתב תחילה לניוזלטר Chainline שלה ופורסם מחדש בבלוג בינואר 2016. חלק מהמפתחים אמרו לה שאיבדה את דעתה; רבים יותר אמרו שהדפוס שתיארה נמצא בכל מקום בקוד שלהם.

איך הפשטה טובה הופכת למלכודת

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

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

הדרך חזרה: להחזיר פנימה, לגזום, לחלץ מחדש

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

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

SSiTech

SiTech — פיתוח אתרים בכוח ה-AI

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