קורס Python 3 שיעור פרויקט פייתון עם מספר קבצים


זה נושא דיון מלווה לערך המקורי ב- https://www.tocode.co.il/bundles/python/lessons/26-project-structure

מה ממולץ לגבי החלוקה לקבצים:

  1. האם כל class ראוי שיהיה בקובץ נפרד?
  2. האם יש כללים שונים לגבי ירושה - מחלקת אם ומחלקות שיורשות ממנה (ואולי גם מחלקות היורשות מהן)?
  3. האם מעבר לתקייה בשם lib או src יש שמות נוספים רלוונטיים? ומה ההבדל, אם בכלל, ביעוד של שני השמות האלו?
  4. האם שמות הקבצים יהיו תמיד באותיות קטנות בלבד? או שרצוי שיהיו זהים לשמות המחלקות שבהם?
  5. איך נמנעים מכפילויות בשמות? ששם בו אבחר לא יהיה קיים כבר בחבילה אחרת (שבשתיהן נרצה להשתמש באותו קוד).

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

.
├── lib
│   ├── Player.py
│   ├── HumanPlayer.py
│   ├── AIPlayer.py
│   └── Board.py
├── main.py

הי,

אחלה שאלות - זאת הגישה שלי:

  1. כן

  2. לא. ובאופן כללי ברוב המקרים לא מומלץ להשתמש בירושה.

  3. אין פה כללים קשיחים. אני משתמש ב lib או src לפרויקטים קטנים. הרבה אנשים משתמשים בשם הפרויקט בתור תיקיה ראשית ובתוכה יוצרים עוד תתי תיקיות. הכי טוב להסתכל בפרויקטי קוד פתוח קיימים ולקבל השראה כמו למשל:

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

  2. זה בסדר שהשם יהיה קיים כבר בחבילה אחרת. כשטוענים קובץ אפשר להשתמש ב as כדי לשנות את השם למשל:

import numpy as np

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

לייק 1

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

תודה על הדוגמאות! אבדוק אותן בהמשך.

שתי שאלות בהקשר הזה אחרי שקראתי את הפרק של ה-Exception (פרק 29):

  1. האם צריך קובץ נפרד לכל Exception שאני יוצר (גם אם אני משתמש בהן רק במחלקה ספציפית)?
    [לכאורה זה נכון כדי לאפשר שימוש חוזר עתידי, תוך יבוא הקוד הרלוונטי בלבד]
  2. האם נכון בעינך לייצר custom exceptions במשחק איקס-עיגול?
    אני השתמשתי ב-Exception מסוג UserWarning עבור מקרה של נסיון ל"מהלך" במיקום לא פנוי או [במימוש שלי] העברת סימן שאינו איקס או עיגול (בדיקה מול רשימת “צורות” חוקיות).

הי,

  1. אני חושב שעדיף ליצור קובץ אחד עם כל ה Custom Exceptions של המערכת שלך. זה יותר נוח כשכולן במקום אחד (וממילא כל Exception הוא נורא קטן).

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