Процесс LLD-проектирования (от требований к коду)
Low Level Design (LLD) — это не немедленное написание кода. Это следование структурированному процессу.
Следуйте этим шагам, чтобы перейти от постановки задачи к рабочему коду.
- Понимание требований Не спешите сразу переходить к классам. Сначала выясните, что должна делать система.
- Какие функции ей необходимы?
- Какие действия она должна поддерживать?
- Какие изменения могут произойти позже?
- Поиск существительных для определения классов Ищите существительные в ваших требованиях. Существительные станут вашими классами. Пример: Редактор документов
- Существительные: Document, Text, Image, Storage, Editor.
- Классы: Document, TextElement, ImageElement, Storage, DocumentEditor.
Пример: Парковка
- Существительные: ParkingLot, Floor, Slot, Vehicle, Ticket.
- Классы: ParkingLot, Floor, Slot, Vehicle, Ticket.
- Используйте IS-A для наследования Спросите себя: «Является ли дочерний объект типом родительского?»
- TextElement IS-A DocumentElement.
- Car IS-A Vehicle.
- Dog IS-A Animal. Если ответ «да», используйте наследование.
- Используйте HAS-A для композиции Спросите себя: «Содержит ли один объект другой?»
- Document HAS-A коллекцию элементов.
- ParkingLot HAS-A набор этажей.
- Car HAS-A двигатель. Используйте композицию для связи этих объектов.
- Поиск глаголов для определения методов Ищите действия в требованиях. Глаголы станут вашими методами.
- «Добавить текст» становится
addText(). - «Сохранить документ» становится
save(). - «Припарковать транспортное средство» становится
parkVehicle().
- Планируйте изменения с помощью интерфейсов Думайте о будущих обновлениях. Если вы сохраняете документ, вы можете использовать файл, базу данных или облако.
- Создайте интерфейс под названием
Persistence. - Создайте реализации, такие как
FileStorageилиDBStorage. Это позволит вам позже добавитьCloudStorage, не меняя существующий код.
- Рисуйте 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