מותר להתחרט

15/12/2020

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

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

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

מותר להתחרט. אפילו שכבר יש לי קוד שעובד.