זה נושא דיון מלווה לערך המקורי ב- https://www.tocode.co.il/bundles/python/lessons/26-project-structure
זה נושא דיון מלווה לערך המקורי ב- https://www.tocode.co.il/bundles/python/lessons/26-project-structure
מה ממולץ לגבי החלוקה לקבצים:
- האם כל class ראוי שיהיה בקובץ נפרד?
- האם יש כללים שונים לגבי ירושה - מחלקת אם ומחלקות שיורשות ממנה (ואולי גם מחלקות היורשות מהן)?
- האם מעבר לתקייה בשם lib או src יש שמות נוספים רלוונטיים? ומה ההבדל, אם בכלל, ביעוד של שני השמות האלו?
- האם שמות הקבצים יהיו תמיד באותיות קטנות בלבד? או שרצוי שיהיו זהים לשמות המחלקות שבהם?
- איך נמנעים מכפילויות בשמות? ששם בו אבחר לא יהיה קיים כבר בחבילה אחרת (שבשתיהן נרצה להשתמש באותו קוד).
אם נסתכל על משחק האיקס-עיגול מהפרקים הקודמים, האם זה מבנה המתאים לו?
.
├── lib
│ ├── Player.py
│ ├── HumanPlayer.py
│ ├── AIPlayer.py
│ └── Board.py
├── main.py
הי,
אחלה שאלות - זאת הגישה שלי:
-
כן
-
לא. ובאופן כללי ברוב המקרים לא מומלץ להשתמש בירושה.
-
אין פה כללים קשיחים. אני משתמש ב lib או src לפרויקטים קטנים. הרבה אנשים משתמשים בשם הפרויקט בתור תיקיה ראשית ובתוכה יוצרים עוד תתי תיקיות. הכי טוב להסתכל בפרויקטי קוד פתוח קיימים ולקבל השראה כמו למשל:
-
מומלץ לבחור שמות קבצים באותיות קטנות כי מערכות הפעלה מסוימות (לינוקס לדוגמא) מבדילות בין קבצים באותיות גדולות לקטנות וזה יוצר בלבול
-
זה בסדר שהשם יהיה קיים כבר בחבילה אחרת. כשטוענים קובץ אפשר להשתמש ב as כדי לשנות את השם למשל:
import numpy as np
למשחק איקס עיגול אישית הייתי בוחר שמות קבצים באותיות קטנות בלבד. חוץ מזה אחלה.
בינתיים כבר קראתי בהמלצות של PEP 8 ובאלו של גוגל, שצריך להשתמש באותיות קטנות בלבד לשמות של מודולים וחבילות (עם קו_תחתון להפרדה בין מילים).
תודה על הדוגמאות! אבדוק אותן בהמשך.
שתי שאלות בהקשר הזה אחרי שקראתי את הפרק של ה-Exception (פרק 29):
- האם צריך קובץ נפרד לכל Exception שאני יוצר (גם אם אני משתמש בהן רק במחלקה ספציפית)?
[לכאורה זה נכון כדי לאפשר שימוש חוזר עתידי, תוך יבוא הקוד הרלוונטי בלבד] - האם נכון בעינך לייצר custom exceptions במשחק איקס-עיגול?
אני השתמשתי ב-Exception מסוג UserWarning עבור מקרה של נסיון ל"מהלך" במיקום לא פנוי או [במימוש שלי] העברת סימן שאינו איקס או עיגול (בדיקה מול רשימת “צורות” חוקיות).
הי,
-
אני חושב שעדיף ליצור קובץ אחד עם כל ה Custom Exceptions של המערכת שלך. זה יותר נוח כשכולן במקום אחד (וממילא כל Exception הוא נורא קטן).
-
כן זה אחלה ובכלל כדאי להשתמש ב Custom Exceptions כמה שיותר במערכת שאתה כותב כי ככה יש לך מבנה טוב לטיפול שונה בכל סוג שגיאה. אני אהבתי מה שעשית שם באיקס עיגול.