התלמוד של המפתחהתלמוד של המפתח

מסכת ארכיטקטורה

מסכת אוברינג'ינרינג

4 הלכות

א

אוברינג'ינרינג

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

אמר ריש לקיש: ראיתי מערכת שבנו לה Event Sourcing, CQRS, ושכבת אבסטרקציה משולשת כדי לנהל רשימת משתמשים של שלושים איש. שאלתי: למה? אמרו: כי ייתכן שנגדל. אמרתי: וכי גדלתם? אמרו: לא. אמרתי: ויודעים אתם כמה זמן לוקח להוסיף שדה לטבלה עכשיו? שתקו, ופניהם אדמו.

ב

הגבול בין ארכיטקטורה טובה לאוברינג'ינרינג

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

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

ג

שלושה סימנים לאוברינג'ינרינג

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

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

ד

YAGNI

YAGNI — You Ain't Gonna Need It — הוא עיקרון מן התורה. ואמרו חכמים: כל קוד שלא נכתב — אינו שבור, אינו צריך תחזוקה, ואינו מסובך את החיים של הדוולופר הבא.

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