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

1 עדיפויות את Context Gathering

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

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

השתמש בקוד עצמו כתיעוד

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

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

2.לeverage Documentation and Historical Insights

קוד מורשת עשויים לצבור הערות, דפי wiki חיצוניים, או אפילו מסמכים עיצוב ישנים.משאבים אלה שווה לבדוק למרות הפגמים תכופים שלהם.הערות Inline, גם אם מיושנות, יכול לרמז על כוונות המפתח המקורי. A תגובה כמו "- הלולאה זה הכרחי כי הממשק הישן שולח לשכפלות API" אומר לך כי החידוש הוא מכוון, לא באג.

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

כאשר מסמך סותר את הקוד

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

שאל שאלות קלמירות ללא היסוס

זה מפתה לענות על שאלה מיד להופיע ידע, אבל עם קוד מורשת כי לעתים קרובות backfires. במקום, לשאול שאלות כי לצמצם את הבעיה.לדוגמה, אם מישהו שואל, "למה השאילתה הזאת איטית?", לפני צלילה לתוך תוכניות ביצוע, שאל: "איזה מסד נתונים?מהו הספירה המשוערת? האם יש אינדקסים על העמודות המשמשות בסעיף WHERE?"

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

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

4 ידע מה אתה לא יודע

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

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

הצעות חלופיות

כאשר אינך יכול לענות על השאלה המקורית, אתה יכול עדיין לספק ערך על ידי הצעת גישות חלופיות או התאמות.לדוגמה, אם מישהו שואל "איך אני לעדכן את ההליך המאוחסן מבלי לשבור את כלי הדיווח?", ואתה לא מכיר את ההליך המאוחסן, אתה יכול לענות, "אני מתחיל על ידי בדיקת אילו יישומים קוראים להליך זה.We can use FLT:1 או לחפש את קוד הבסיס לקבלת הפניות, כמו כן, לשקול גם את מה הם מגיבים להנחיות ברורות.

5. להציע פתרונות מעשיים, פתרונות Incremental

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

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

מתן דוגמאות קוד

השתמש בקוד snippets כדי להמחיש את ההצעות שלך. לכתוב אותם בשפה ובסגנון של בסיס הקוד הקיים.אם הקוד המורשת משתמש ב-PPPedural PHP ואתה מראה גישה מודרנית, הצוות יכול לדחות אותו כזר מדי. במקום זאת, להפגין פתרון באמצעות אותם דפוסים הצוות כבר מבין - גם אם דפוסים אלה אינם אידיאליים.אתה תמיד יכול להוסיף הערה כמו "זה שינוי מינימלי; פתרון קבוע יותר יהיה כרוך שירות".

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

פוסטר תרבות רגועה ומכוונת חופשית

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

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

השתמש בטכניקת "שלוש למה"

כאשר בוחנים מדוע קיים קוד מורשת מסוים, שאל "למה?" שוב ושוב (עד שלוש פעמים) לחשוף את הסיבה העמוקה יותר.

  • מדוע שאילתה זו של SQL שנבנתה על ידי מחרוזת מתארת? – כי היא נכתבה לפני שההצהרות המוכנות היו נפוצות במסגרת זו.
  • מדוע לא היגרנו ליוצר השאילתה? – כי השאילתה כוללת שמות טבלאות דינמיים שהבנייה אינה תומכת בהם.
  • מדוע שמות טבלאות דינמיות? - כי המערכת תומכת במגוון רחב של נתונים נפרדים ללקוח.

עכשיו אתה מבין שתיקון הצהרה מוכן פשוט לא יעבוד; אתה צריך לטפל בשמות אובייקט דינמי.טכניקה זו מונעת תשובות רדודות.

שמור על הכישורים שלך שארפ עם למידה רציפה

היכולת לענות על שאלות קוד מורשת משתפרת עם תרגול מכוון.מחקר מספק דפוסים ממקורות כמו מרטין Fowler של קוד LT:0refactoringFLT:1 או מייקל פירס:2 עובד ביעילות עם Legacy CodeFLT 3: למד כיצד לזהות את הריחות כגון שיעורים גדולים, שיטות ארוכות, ואובססיה פרימיטיבית אלה לעזור לך לא רק להסביר מה לא בסדר, אלא אם זה צעד אחר צעד אחר צעד.

כמו כן להשקיע זמן בכלים שהופכים קוד מורשת קל יותר להבין: דפוקים, מנתחי תלות וכלי כיסוי מבחן. לדוגמה, אם בסיס הקוד הוא ב-PPP, ללמוד להשתמש ב- Xdebug כדי לעקוב אחר ביצוע.אם זה .NET, להיות נוח עם פרופיל Visual Studio.

לבסוף, לעסוק בקהילות שדן קוד מורשת. Stack Overflow, קהילות רדיט כמו r/legacycode, שיחות טכנולוגיה בכנסים יכולים לתת לך נקודות מבט חדשות.החשיפה יותר יש לך מערכות מורשת מגוונות, כך שאתה הופך במהירות לתפוס את קווירקים של חדש.

8.תעדו את הממצאים שלכם

לאחר שתענה על שאלה, כתוב מה שלמדת.זה יכול להיות תגובה קצרה בקוד, כניסה של wiki או הודעה מתחייבת המסבירה את ההחלטה.לדוגמה, אם מישהו שאל על יוצא דופן חוזר של אפס נקודות, ולאחר מכן חקמת אותו לסימדומים החסרים בתיק תצורה, להוסיף תגובה בנקודת ההסמכה: "חשוב: זה חייב להיקרא לפני כל ניתוח מסד נתונים; ראה #12 לפרטים."

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

יצירת "רשימת קוד ההרפתקאות"

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

מסקנה

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

(ב) לקריאה נוספת על אסטרטגיות קוד מורשת, ראה את המאמר של מרטין פולר על שורת:0Legacy CodeFLT:1 וספרו של מייקל פילס:2 עובד ביעילות עם קוד Legacy CodeFLT 3 עבור הדרכה על שאלות טכניות ביעילות, את ה-FLT:4Stack 3Dack:5 הוא זמן ללא התייחסות, אם אתה מציע מסגרת מעשית עבור שיטות ניהול נתונים, כגון: 7.