Процес проєктування LLD (від вимог до коду)

Низькорівневе проєктування (Low Level Design) — це не про негайне написання коду. Це про дотримання структурованого процесу.

Дотримуйтесь цих кроків, щоб перейти від постановки задачі до робочого коду.

  1. Зрозумійте вимоги Не поспішайте одразу переходити до класів. Спочатку з'ясуйте, що саме має робити система.
  • Які функції їй потрібні?
  • Які дії вона має підтримувати?
  • Які зміни можуть відбутися пізніше?
  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 для успадкування Запитайте себе: «Чи є дочірній об'єкт типом батьківського?»
  • TextElement IS-A DocumentElement.
  • Car IS-A Vehicle.
  • Dog IS-A Animal. Якщо відповідь «так», використовуйте успадкування.
  1. Використовуйте HAS-A для композиції Запитайте себе: «Чи містить один об'єкт інший?»
  • Document HAS-A колекцію елементів.
  • ParkingLot HAS-A набір поверхів.
  • Car HAS-A двигун. Використовуйте композицію для зв'язку цих об'єктів.
  1. Визначайте дієслова, щоб знайти методи Шукайте дії у вимогах. Дієслова стають вашими методами.
  • Add text перетворюється на addText().
  • Save document перетворюється на save().
  • Park vehicle перетворюється на parkVehicle().
  1. Плануйте зміни за допомогою інтерфейсів Думайте про майбутні оновлення. Якщо ви зберігаєте документ, ви можете використовувати файл, базу даних або хмару.
  • Створіть інтерфейс під назвою Persistence.
  • Створіть реалізації, такі як FileStorage або DBStorage. Це дозволить вам пізніше додати CloudStorage, не змінюючи існуючий код.
  1. Малюйте UML та пишіть код Коли у вас будуть класи, успадкування, композиція та методи, намалюйте UML-діаграму. Вона слугуватиме вашим кресленням. Нарешті, перетворіть це креслення на чистий код.

Підсумковий процес:

  • Вимоги
  • Іменники $\to$ Класи
  • IS-A $\to$ Успадкування
  • HAS-A $\to$ Композиція
  • Дієслова $\to$ Методи
  • Варіації $\to$ Інтерфейси
  • UML-діаграма
  • Фінальний код

Джерело: https://dev.to/roshan_singh_dd54d52bbaa7/lld-design-process-from-requirements-to-code-594m