למתכנתים היותר ותיקים ולאלה שכמוני רק התחילו…
בקוד כמו התרגיל לדוגמא במחברת 2 שבוע 8, כיצד אתם מתמודדים עם קוד ארוך שכזה?
מבחינת פקודות מבחינת תפקידים מחלקות וכו? רושמים לעצמכם פעולות או שפשוט כל הזמן חוזרים או משהו בסגנון?
אני מאלה שרק התחילו.
אני ניגשת למשהו ארוך ככה:
קודם כל איזה מבט ככה בגדול על הכל “מלמעלה” -
יש איזה חלוקה למקטעים (נגיד מחלקות)? האם אני בקלות (בלי להכנס יותר מדי לפרטים) יכולה להבין מה משמעות כל מקטע?
ואח’כ לחזור להתחלה ולקרוא פחות או יותר שורה-שורה, כשאני שואלת את עצמי - מה קורה פה? מה המטרה של זה?
אם יש משהו שאני לא כ’כ מבינה, אני אנסה שוב.
אם ניסיתי כמה פעמים ואני מבינה בכללי, אבל אולי חסר לי איזה פרט, אני כנראה אמשיך הלאה.
אחרי שקראתי והבנתי בערך פעם אחת, אקרא שוב כדי להבין יותר טוב.
בגלל שלפעמים הקוד זורק אותך קדימה / אחורה לחפש כל מיני דברים קריאה שנייה / שלישית / עשירית עוזרת, כי כבר ראיתי (בערך) מה עושות פונקציות אחרות.
בתרגילים של השבוע עברתי לממש פיזית לצייר לי על דף את המחלקות. ואז עשיתי קווים של הקשרים ביניהם ורשמתי לי מתחת לכל אחת איזה מטודות אני חושב שצריך לעשות להם.
לאחר מכן העברתי את זה לקוד בצורה מאוד בסיסית למשל:
class A:
pass
class B:
pass
class C(A, B):
def add_number(self):
pass
ואז התחלתי לעבוד על זה. תוך כדי תנועה כמובן שהוספתי אולי מטודות שלא חשבתי שאצטרך
אבל זה נתן לי מסגרת.
השיטה שלי זה לקרוא פעם אחת “חפיף” הכל ברצף, ומה שהבנתי הבנתי, מה שלא - לא. אחר כך לחזור ולהתעמק וגם לנסות לשחק עם הקוד, ליצור אוביקטים ולהפעיל מתודות. לפעמים באמת עוזר לקרוא מספר כלשהו של פעמים כאשר בדרך כלל בכל פעם כזאת יפלו עוד כמה אסימונים. בהצלחה!
- שתי קריאות – רפרוף וקריאה נוספת לעומק.
- תעיף את התיעוד ותתעד בעצמך.
- חפש את נקודת הכניסה לקוד: מאיפה הכל מתחיל? אם זה קוד שבנוי ממחלקות שווה להסתכל על ה־
__init__
ים. פרום את הקוד מהנקודה הזו. - שחק הרבה עם הקוד בצורה אינטרקטיבית. נסה ליצור מופעים מהמחלקה, להריץ פונקציות ולראות איך כל דבר עובד ומה הוא מצפה לקבל. חשוב: כתוב לעצמך בצד את המסקנות על כל פונקציה.
- ההעדפה האישית שלי, אם אני צריך לקרוא את כל הקוד, היא להתחיל מהאבסטרקטי ביותר ולהיכנס פנימה לאט לאט.
- נסה להסביר למישהו אחר (או לברווז גומי שקנית) איך הקוד עובד בקול רם.
טיפים נוספים: https://web.media.mit.edu/~lieber/Teaching/IISDW/Read-Code.html
תודה לעוזרים, באמת אנסה להשתמש בחלק מהשיטות פה!
תודה לשואל , החכמנו.