Процес проєктування LLD (від вимог до коду)
Низькорівневе проєктування (Low Level Design) — це не про негайне написання коду. Це про дотримання структурованого процесу.
Дотримуйтесь цих кроків, щоб перейти від постановки задачі до робочого коду.
- Зрозумійте вимоги Не поспішайте одразу переходити до класів. Спочатку з'ясуйте, що саме має робити система.
- Які функції їй потрібні?
- Які дії вона має підтримувати?
- Які зміни можуть відбутися пізніше?
- Визначайте іменники, щоб знайти класи Шукайте іменники у ваших вимогах. Іменники стають вашими класами. Приклад: Редактор документів (Document Editor)
- Іменники: Document, Text, Image, Storage, Editor.
- Класи: Document, TextElement, ImageElement, Storage, DocumentEditor.
Приклад: Парковка (Parking Lot)
- Іменники: 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 двигун. Використовуйте композицію для зв'язку цих об'єктів.
- Визначайте дієслова, щоб знайти методи Шукайте дії у вимогах. Дієслова стають вашими методами.
- Add text перетворюється на addText().
- Save document перетворюється на save().
- Park vehicle перетворюється на parkVehicle().
- Плануйте зміни за допомогою інтерфейсів Думайте про майбутні оновлення. Якщо ви зберігаєте документ, ви можете використовувати файл, базу даних або хмару.
- Створіть інтерфейс під назвою Persistence.
- Створіть реалізації, такі як FileStorage або DBStorage. Це дозволить вам пізніше додати CloudStorage, не змінюючи існуючий код.
- Малюйте 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