תהליך עיצוב LLD (מדרישות לקוד)

עיצוב ברמה נמוכה (Low Level Design) אינו עוסק בכתיבת קוד באופן מיידי. הוא עוסק במעקב אחר תהליך מובנה.

עקבו אחר הצעדים הבאים כדי לעבור מהגדרת הבעיה לקוד עובד.

  1. הבנת הדרישות אל תקפצו ישר למחלקות. ראשית, גלו מה המערכת צריכה לעשות.
  • אילו תכונות (features) היא צריכה?
  • אילו פעולות היא חייבת לתמוך בהן?
  • אילו שינויים עשויים לקרות בהמשך?
  1. זיהוי שמות עצם למציאת מחלקות חפשו שמות עצם בדרישות שלכם. שמות העצם יהפכו למחלקות שלכם. דוגמה: עורך מסמכים (Document Editor)
  • שמות עצם: Document, Text, Image, Storage, Editor.
  • מחלקות: Document, TextElement, ImageElement, Storage, DocumentEditor.

דוגמה: חניון (Parking Lot)

  • שמות עצם: ParkingLot, Floor, Slot, Vehicle, Ticket.
  • מחלקות: ParkingLot, Floor, Slot, Vehicle, Ticket.
  1. שימוש ב-IS-A לירושה (Inheritance) שאלו את עצמכם: "האם הבן הוא סוג של ההורה?"
  • TextElement הוא IS-A של DocumentElement.
  • Car הוא IS-A של Vehicle.
  • Dog הוא IS-A של Animal. אם התשובה היא כן, השתמשו בירושה.
  1. שימוש ב-HAS-A להרכבה (Composition) שאלו את עצמכם: "האם אובייקט אחד מכיל אובייקט אחר?"
  • Document הוא HAS-A אוסף של אלמנטים.
  • ParkingLot הוא HAS-A סט של קומות.
  • Car הוא HAS-A מנוע. השתמשו בהרכבה (composition) כדי לקשר בין האובייקטים הללו.
  1. זיהוי פעלים למציאת מתודות (Methods) חפשו פעולות בדרישות. הפעלים יהפכו למתודות שלכם.
  • הוספת טקסט הופכת ל-addText().
  • שמירת מסמך הופכת ל-save().
  • חניית רכב הופכת ל-parkVehicle().
  1. תכנון לשינויים באמצעות ממשקים (Interfaces) חשבו על עדכונים עתידיים. אם אתם שומרים מסמך, אתם עשויים להשתמש בקובץ (File), במסד נתונים (Database) או בענן (Cloud).
  • צרו ממשק בשם Persistence.
  • צרו מימושים (implementations) כמו FileStorage או DBStorage. זה יאפשר לכם להוסיף CloudStorage מאוחר יותר מבלי לשנות את הקוד הקיים.
  1. שרטטו UML וכתבו קוד ברגע שיש לכם מחלקות, ירושה, הרכבה ומתודות, שרטטו דיאגרמת UML. היא משמשת כתוכנית העבודה (blueprint) שלכם. לבסוף, הפכו את התוכנית הזו לקוד נקי.

סיכום התהליך:

  • דרישות (Requirements)
  • שמות עצם למחלקות (Nouns to Classes)
  • IS-A לירושה (IS-A to Inheritance)
  • HAS-A להרכבה (HAS-A to Composition)
  • פעלים למתודות (Verbs to Methods)
  • וריאציות לממשקים (Variations to Interfaces)
  • דיאגרמת UML (UML Diagram)
  • קוד סופי (Final Code)

מקור: https://dev.to/roshan_singh_dd54d52bbaa7/lld-design-process-from-requirements-to-code-594m