Table of Contents
תכנות Pair, תרגול מושרש בתכנות קיצונית, מציב שני מפתחים ביצירה יחידה - אחד כמו קוד הכתיבה הנהג ו השני כמו הניווט הסקירה של כל קו בזמן אמת. אינטנסיביות שיתופית זו עושה יותר מאשר לתפוס באגים מוקדם; זה יוצר סביבה הוראה רציפה, נמוכה בלחץ נמוך, כאשר הצוות שואף לאמץ ולהפנים עקרונות SOLID, זוג הופך לאחד של האסטרטגיות היעילות ביותר זמין על ידי שילוב של שיטות פעולה עם ידע יומיומי, עם חמש קבוצות משותפות, עם יכולות להטמיעוכות יומיומיות, מעבר לאימון יומיומי.
עקרונות SOLID, אשר הוצגו לראשונה על ידי רוברט C. מרטין (Uncle Bob), משמשים כבסיס לבניית מערכות מוכוונות אובייקטים כי הם קלים לשמור, להרחיב, ולמבחן. תכנות Pair מגביר את ההשפעה שלהם כי זה מכריח את שני היזמים לבטא את החלטות העיצוב שלהם, שאלות, עדות, קודם כל עיקרון מונע חוב טכני.
הבנת העקרונות של SOLID
לפני שדן כיצד תכנות זוג יכול לחזק את SOLID, כדאי לבדוק כל עיקרון בהקשר. חברי צוות שזוג יחד ייהנו מאוצר מילים משותף והבנה ברורה של מה שכל עקרון מנסה לפתור.
עקרון אחריות יחיד (SRP)
בכיתה צריך רק סיבה אחת לשנות.זה אומר שזה צריך לבודד אחריות אחת ולעשות את זה טוב.כאשר מפתחים זוג, הם יכולים לזהות במהירות כיתות כי הם עושים יותר מדי - לדוגמה, "שירות משתמש" כי הן אותנטיים משתמשים ושולחים הודעות דוא"ל יתקבלו בברכה. "מה קורה אם נשנה את פורמט הדואר האלקטרוני?
Open/Closed Principle (OCP)
ישויות תוכנה צריכות להיות פתוחות להרחבה אך סגורות לשינויים.בפרקטיקה, הדבר מעודד מערכות עיצוב שבו התנהגות חדשה נוספה באמצעות כיתות חדשות או פונקציות במקום לשנות קוד קיים, נבדק במהלך מפגש תכנות זוג, הנהג עשוי לנסות לשנות מודול ליבה כדי להוסיף תכונה.הנווט יכול להציע אסטרטגיה כמו שימוש בפולימורפיזם, זריקה תלותית, או דפוס התבנית של השיטה כדי להשיג ללא שינוי.
Liskov Substitution Principle (LSP)
אובייקטים של סופר-class צריכים להיות מוחלפים עם אובייקטים של תת-מעמד ללא השפעה על נכונות. הפרות LSP מופיעים לעתים קרובות כ"אי-א" יחסים שאינם מתנהגים כפי שמצופה - למשל, כיכר שלא משחקת על ידי כללי מלבן.Pairing מסייעת לתפוס את הבעיות האלה כי הניווט יכול לשאול, "אם אנחנו מחליפים את הבסיס לשיעור זה נגזר, המבחן עדיין יעבור שיחות כאלה של צוות מעמיק".
Interface Segregation Principle (ISP)
אין צורך לכפות על הלקוח להיות תלוי בשיטות שהוא אינו משתמש.ISP מעודד ממשקי שומן להיות מחולקים לקטנים, ספציפיים לתפקיד.בפגישת זוג, הנווט עשוי להבחין בנהג יישום ממשק גדול אשר מכריח מעמד לספק שיטות ריקות.הם יכולים לדון פיצול הממשק לתוך חוזים ממוקדים, המוביל קוד קוהרנטי יותר ומבחן.
הסתברות להורדת Principle (DIP)
מודולים ברמה גבוהה לא צריך להיות תלוי מודולים ברמה נמוכה; שניהם צריכים להיות תלויים מופשטים. תכנות Pair הוא אידיאלי עבור הדגמת DIP כי נווט יכול לאתגר מיידית ישירה של תלות קונקרטית. הם עשויים להציע להציג ממשק ולהזריק אותו באמצעות בונה או מיכל DI.זוג יכול אז לספק את הקוד יחד, חיזוק העיקרון באמצעות תרגול הידיים.
תכנות Pair כ- Catalyst for SOLID אימוץ
תכנות אווירי יוצר באופן טבעי לולאה משוב שעובדת לטובת אימוץ SOLID.כי שני היזמים מעורבים באופן פעיל, כל החלטה נבחנת ברגע.הנווט יכול להוביל, "האם המעמד הזה מפר את SRP?" או "איך אנחנו יכולים ליישם את DIP כאן?", הנהג, בתורו, מקבל תובנה מיידית כיצד החשיבה שלהם שונה מפרדיגמה העיצוב הרצויה.
יתר על כן, תכנות זוגי מקטין את הפחד של סיפוק. מנסה ליישם עקרונות SOLID לבסיס קוד קיים יכול להרגיש מסוכן - שינויים עלולים לשבור משהו.עם שתי קבוצות של עיניים, הצוות יכול לספק ביטחון, בידיעה שכל צעד לא ייתפס באופן מיידי.בטיחות פסיכולוגית זו מאיצה למידה.
תפקידי התכנות השונים גם תומכים במודולים למידה שונים.הנהג מתמקד בפרטים הטקטיים של קוד הכתיבה; הניווט לוקח מבט אסטרטגי, חשיבה על אדריכלות ועיצוב. רוטט תפקידים אלה באופן קבוע מבטיח שכל מפתח פועל הן את הדרך והן את הסיבה לעקרונות SOLID.
Pair Programming סגנונות ש-Reinforce SOLID
(FLT:0)Driver-Navigator (קלאסי סטייל)FLT:1: אחד מפתחי סוגים בעוד שאר ביקורות.הנויטור יכול לצפות במכוון להפרות SOLID ותיקוןים מהירים.לדוגמה, לראות שיעור עם שלוש אחריות נפרדת, הנווט יכול לשאול, "האם עלינו להוציא את אלה בכיתות נפרדות?", הנהג מיישם את השינוי.
(FLT:0)Ping-Pong StyleFLT:1: נפוץ בשימוש בפיתוח מונע בדיקה.מפתח אחד כותב מבחן כושל המבטא יעד עיצוב התואם עם SOLID (למשל, "אני רוצה להוסיף שיטת תשלום חדשה ללא שינוי מעבדים קיימים" - OCP) השני כותב את היישום כדי לספק את הבדיקה.
(FLT:0)Strong-Style PairingFancy:1; הנווט מכתיב את הצעד הבא, מתאר מה להקליד מס מדויק.סגנון זה הוא חזק במיוחד עבור הוראה SOLID כי הניווט חייב לבטא החלטות עיצוב בקול רם.נהג עוקב אחר הוראות, למידה באמצעות זמן, הנהג מפנים את הדפוסים כי נווטמטורמס.
אסטרטגיות לקידום עקרונות SOLID באמצעות תכנות Pair
פשוט לשאול שני מפתחים לשבת יחד לא מבטיח כי עקרונות SOLID נדון או יאומץ.צוותים חייבים להיות מכוונים להדריך מפגשים כדי לעודד שיחות ברמת עיצוב.
קביעת מטרות למידה ברורות לכל ישיבה
לפני הצמד, להגדיר מה עקרון SOLID יתמקד.לדוגמה, מפגש בוקר יכול לכוון את עקרון האחריות הבודד.שני היזמים בודקים חלק מבסיס הקוד שידוע שיש לו הפרות SRP. מטרתם היא לזהות ולעצב את הפרות אלה.יש מטרה מסוימת שומר על הפגישה פרודוקטיבי ומונע את הצמד מסחף למשימות שאינן קשורות.
ייתכן שתציינו מטרות ב-Collelist משותף גלויות לשני היזמים: לדוגמה:
- מצא לפחות שלוש כיתות בעלות יותר מאחת אחריות.
- להוציא כל אחריות נוספת לכיתה נפרדת.
- ודאו ששיעורי השם עדיין עוברים את כל הבדיקות הקיימות.
השתמש ב- Code Review כ- Learning Opportunity בזמן אמת
בסקירה המסורתית של הקוד, הערות מגיעות שעות או ימים לאחר כתיבת הקוד.בתוכנות זוג, ביקורת מתרחשת מיד.לעודד את הנווט לפעול כ"אפוטרופוס SOLID" עבור הפגישה.כל פעם שהנהג מתחיל שיטה חדשה או מעמד, הניווט צריך לשאול, "איך זה קשור לעקרונות העיצוב שלנו? האם יש מופשט יותר שנוכל להשתמש בו?", נהגי לומד על שאלות פנימיות.
כדי להפוך את הטבע הזה, הצוותים יכולים לאמץ כלל פשוט: הניווט חייב לזהות לפחות שיפור הקשור ל-SOLID אחד לשלושים דקות של הצמדות.הההגמביציה הזו שומרת על המודעות גבוהה.
שילוב של נספחים מחדש
לקבוע את 15-20 הדקות האחרונות של כל מפגש זוגי כדי לשנות את הקוד כדי להיות יותר SOLID-compliant.זה יכול להיעשות על הקוד רק נכתב, או על חלק קיים של חוב טכני.לדוגמה, הזוג עשוי להסתכל על מעמד מורשת המפר את הקוד הפתוח / סגור פשט ועיצוב מחדש כדי לקבל התנהגויות חדשות באמצעות הזרקת עקביות.
מפגשים מספקים הם שבו עקרונות מופשטים הופכים מוחשיים.הזוג יכול לתעד מה הם עשו ומדוע, שיתוף התוצאות עם הצוות הרחב יותר.זה בונה ספריית דוגמאות בעולם האמיתי של שיפורים SOLID.
מפתחים מנוסים עם ג'וניורס בכוונה
עקרונות SOLID יכולים להיות מופשטים עבור מפתחים מוקדם בקריירה שלהם.לקבוע מפתח בכיר אשר מגלם עקרונות אלה עם מפתח זוטר להאיץ אימוץ.הבוגר יכול להוכיח כיצד לחשוב על עיצוב מנקודת מבט SOLID, לא רק ברמת הקוד אלא ברמה האדריכלית.
כדי למקסם את היעילות, לסובב זוגות שבועי כך שהידע מתפשט על פני הצוות.עודד זוטרים לנהוג חלק מהזמן כך שהם מקבלים אימון יד על ידי SOLID-orienteded עיצוב.
Integrate SOLID Checklists into Pairing Workflows
צור רשימה פיזית או דיגיטלית כי הזוג עובר לפני סימון משימה כפי שנעשה.
- האם לכל אחד מהכיתות יש אחריות ברורה?
- האם ניתן להוסיף תכונה חדשה מבלי לשנות מעמד קיים?
- האם ניתן להחליף תת-מחלקה לסופר-class שלה ללא בדיקות?
- האם כל ממשק מכיל רק את השיטות הדרושות ללקוחות שלו?
- []האם מודולים ברמה גבוהה תלויים בהפשטות, לא במימושים קונקרטיים?
בדיקה זו הופכת למודל נפשי משותף כי הזוג משתמש לאורך כל הפגישה.עם הזמן, הצורך בסימון הפיזי פוחת כשהעקרונות הופכים להרגל.
דוגמאות בעולם האמיתי ואתגרים משותפים
צוותים שאימצו תכנות זוגי עבור דוח אימוץ SOLID כי הוא מקטין את הזמן הדרוש עבור ביקורות קוד וחתכים על עבודות מחדש.למשל, סטארט-אפ שירותים פיננסיים הציג שתי שעות פגישות שלוש פעמים בשבוע.בתוך חודש, שיעור הפגם שלהם צנח ב-30%, וחברי הצוות תיארו באופן עקבי את הקוד שלהם כ"נקי וקל יותר להרחיב".
עם זאת, ישנם אתגרים.יש מפתחים מתנגדים לתכנות זוג כי הם מרגישים שהוא מאט אותם בהתחלה. הם עשויים גם לדאוג כי בדיקה מתמדת תרגיש לא נוח להתגבר על זה, להדגיש כי המטרה היא למידה, לא שיפוט. מסגרת SOLID אימוץ כמסע צוות.התחל עם מפגשים קטנים וממוקדים (למשל 30 דקות) ולהגדיל בהדרגה את משך הזמן ככל שהמפתחים הופכים יותר נוח.
עוד נפילה נפוצה היא שזוגות יכולים להיות תקועים ב"עייפות של ממריץ" התפקיד של הנווט דורשני מנטלית.כדי למנוע כוויות, לקבוע הפסקות קבועות ותפקידים חלופיים כל 30-45 דקות.התפקיד של זה הולך להתמקד בעקרונות SOLID: אל תנסו לאכוף את כל חמשת העקרונות בכל פגישה.
לבסוף, להבטיח כי הצוות יש הבנה משותפת של מה כל עקרון SOLID פירושו בהקשר הספציפי שלהם. Misunderstandings יכול להוביל למאמץ יתר - למשל, יצירת ממשקים קטנים רבים רק כדי לספק ISP כאשר ממשק יחיד, מעוצב היטב יהיה מספיק. pair תכנות לא צריך להיות דוגמטי; לעודד יישום פרגמטי.
הצלחה מרגיעה
כדי לאמוד האם תכנות זוג הוא למעשה שיפור אימוץ SOLID, הצוותים יכולים לעקוב אחר מספר מדדים:
- (FLT:0) פרמטרים איכותיים: FLT:1reamatic Complex, הפיכה בכיתה ועומק עץ הירושה. ניכויים אלה לאחר מפגשים זוגיים מצביעים על דבקות טובה יותר לעקרונות עיצוב.
- (ב) כפל:0) אישור: צוותים 1FLT אשר מספקים לעתים קרובות יותר נוטים להיות ציות SOLID טוב יותר.
- (ב) עיין:0 (ב) עיין ב-[[1924]], שם משתתפים מפתחים את מושגי SOLID שהם הרגישו שהם למדו או הגישו במהלך הצירוף.
- (FLT:0) צפיפות בריג'י: ירידה באגים הקשורים לתכנון - כגון מודולים הזקוקים לשינויים במקומות מרובים עבור תכונה אחת - מטרות שיפרו את SRP ו- OCP אימוץ.
מסקנה
תכנות Pair הוא יותר מטכניקה עבור לתפוס טיפוס ומיזוג סכסוכים.כאשר נעשה שימוש בכוונה, זה הופך למנוע למידה מתמשך עבור מצוינות עיצוב.עקרונות SOLID לספק מסגרת ברורה וידידותית שיחה כי זוגות יכולים להשתמש כדי להעריך כל מחלקה, שיטה, מערכת יחסים הם יוצרים. על ידי הגדרת מטרות ברורות, הפעלת תפקידים רוטטטיביים, שילוב של שינוי מכוון, ושמירה על אווירה לא שיפוטית, קבוצות יכולות לטפח ידע מעשי של מפתחים, עיצוב יעיל יותר, הוא מסוגל לשנות את העיצוב שלהם, עיצוב, הוא יעיל יותר, עיצוב, עיצוב, עיצוב, עיצוב יעיל יותר, הוא מסוגל לשנות את העיצוב, עיצוב, עיצוב יעיל יותר, עיצוב מחדש, עיצוב, עיצוב, עיצוב מחדש, הוא יותר, הוא יותר, עיצוב מחדש, עיצוב, עיצוב, עיצוב, עיצוב, עיצוב, עיצוב מחדש, עיצוב, עיצוב יעיל יותר, עיצוב מחדש של עיצוב מחדש של עיצוב מחדש, עיצוב מחדש, עיצוב, עיצוב, עיצוב מחדש, הוא יעיל יותר, עיצוב יעיל יותר, עיצוב מחדש, עיצוב מחדש של עיצובים, עיצוב מחדש, הוא יעיל יותר, עיצוב מחדש של פונקציות יעיל יותר, עיצוב מחדש של פונקציות.
(ב) לעיין בכתובים של רוברט ק.ר.ר.ר.ר.ר.ל.ד.ר.ל.ל.ל.ד.ר.ר.ר.ר.ר.ר.ר.התב"ל (ב) ב[[1924]], [[1924]]]], [[1924]]]]]]]]]]