איקס עיגול - פרמטר board

היי,
בפונקציה הראשית של מימוש המשחק אני מגדירה את הלוח (board), הוא כבר קיים בזיכרון וכמו שלמדנו במחברת 5 (Mutability and Tuples) כל שינוי של הרשימה ישנה אותו בזיכרון. אז אני לא מבינה עד הסוף למה בכל הפונקציות הוא אחד הפרמטרים. האם תמיד בשימוש בפונקציות יש צורך לשלוח את הפרמטר גם אם הוא רשימה?
המון תודה

לייק 1

כן, כדאי. זה יאפשר בעתיד בנייה נוחה יותר של התוכנה, אם נניח תרצי לממש איקס עיגול שמתחשב בכמה לוחות.
יותר מזה – אם את רוצה להיות ממש צדיקה, ההמלצה היא (לרוב, ותחת מגבלות יעילות) לא לפעול בפונקציה ישירות על board אלא ליצור עותק שלו ולהחזיר את העותק. ככה את גם לא תפגעי ב־board המקורית.

לייק 1

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

לייק 1