• בלוג
  • אתם לא בונים את ריילס

אתם לא בונים את ריילס

16/11/2025

אחד המדדים הקלים לסיבוכיות קוד בפרויקט הוא התשובה לשאלה "בכמה מקומות צריך להסתכל כדי להבין מה נשבר". דוגמה קלה מפייתון:

import json

class BaseItem:
    def __init__(self):
        with open("settings.json", encoding="utf8") as f:
            self.settings = json.load(f)

class Item(BaseItem):
    pass

if __name__ == "__main__":
    item = Item()

יש לנו שני קלאסים וקוד ראשי. כשמנסים להריץ את התוכנית בלי קובץ settings.json זה כמובן לא עובד עם שגיאה. מסלול הדיבוג, בהנחה שכל קטע קוד נכתב בקובץ משלו, מתחיל בקוד הראשי, ממשיך לקובץ item.py ומשם ל base_item.py כדי למצוא את הקוד שנופל.

תשומת לב לפרט הזה יכולה לחסוך הרבה כאב ראש למי שקורא את הקוד, כלומר התיקון יהיה:

import json

class BaseItem:
    def __init__(self, settings_file_path):
        with open(settings_file_path, encoding="utf8") as f:
            self.settings = json.load(f)

class Item(BaseItem):
    pass

if __name__ == "__main__":
    item = Item(settings_file_path="settings.json")

הקוד עדיין נשבר אבל הפעם אני מבין כבר מהשורה הראשונה שאני קורא מה קרה ומה צריך לתקן.

לפעמים אנשים שומעים את זה וחושבים "טוב אבל היופי בקוד זה שיש קונבנציות. אנחנו בונים מערכת וכל מי שמבין את המערכת צריך לדעת מה השמות של קבצי ההגדרות ושכל Item צריך קובץ הגדרות בסיסי וממילא לכולם יש קובץ settings.json בגיטהאב ואנחנו לא חושבים על זה". אפשר גם להיזכר בפריימוורקים שאנחנו אוהבים כמו ריילס וב Convention over Configuration ולהסביר שאנחנו בונים פה קונבנציות ואנשים צריכים להכיר את הקונבנציות ואחרי שיכירו אותן כולם יעבדו יותר מהר.

אבל אם נהיה הוגנים עם עצמנו נצטרך להודות - אנחנו לא בונים ריילס. הפרויקט שלכם מלא ביותר קונבנציות משורות קוד וממילא אף אחד לא תיעד את הדברים או מכיר אותם. עד שיהיה לכם את התיעוד המסודר של ריילס ואת האחידות בכל שורה בפרויקט תעשו לעצמכם ולחברי הצוות טובה וכתבו את הקוד הרלוונטי בצורה ברורה. פחות חיפושים עושים חיים קלים למתכנתים וגם ל AI.