Процесс LLD-проектирования (от требований к коду)

Low Level Design (LLD) — это не немедленное написание кода. Это следование структурированному процессу.

Следуйте этим шагам, чтобы перейти от постановки задачи к рабочему коду.

  1. Понимание требований Не спешите сразу переходить к классам. Сначала выясните, что должна делать система.
  • Какие функции ей необходимы?
  • Какие действия она должна поддерживать?
  • Какие изменения могут произойти позже?
  1. Поиск существительных для определения классов Ищите существительные в ваших требованиях. Существительные станут вашими классами. Пример: Редактор документов
  • Существительные: Document, Text, Image, Storage, Editor.
  • Классы: Document, TextElement, ImageElement, Storage, DocumentEditor.

Пример: Парковка

  • Существительные: 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. Поиск глаголов для определения методов Ищите действия в требованиях. Глаголы станут вашими методами.
  • «Добавить текст» становится addText().
  • «Сохранить документ» становится save().
  • «Припарковать транспортное средство» становится parkVehicle().
  1. Планируйте изменения с помощью интерфейсов Думайте о будущих обновлениях. Если вы сохраняете документ, вы можете использовать файл, базу данных или облако.
  • Создайте интерфейс под названием Persistence.
  • Создайте реализации, такие как FileStorage или DBStorage. Это позволит вам позже добавить CloudStorage, не меняя существующий код.
  1. Рисуйте UML и пишите код Когда у вас будут готовы классы, наследование, композиция и методы, нарисуйте UML-диаграмму. Она послужит вашим чертежом. Наконец, превратите этот чертеж в чистый код.

Итоговая схема:

  • Требования
  • Существительные $\rightarrow$ Классы
  • IS-A $\rightarrow$ Наследование
  • HAS-A $\rightarrow$ Композиция
  • Глаголы $\rightarrow$ Методы
  • Вариации $\rightarrow$ Интерфейсы
  • UML-диаграмма
  • Финальный код

Source: https://dev.to/roshan_singh_dd54d52bbaa7/lld-design-process-from-requirements-to-code-594m