TL;DR: Вертикальный кодбейс — это подход к организации кода, который минимизирует cognitive load, улучшает colocation и повышает cohesion. В статье разберем, как это работает и почему это важно в современной разработке.
Введение: Контекст и актуальность
В эпоху микросервисов, компонентного подхода и распределенных систем, управление кодом становится все более сложным. Cognitive load разработчиков растет, а поддержка больших монолитных кодбейсов становится настоящим вызовом. Вертикальный кодбейс предлагает альтернативу, которая помогает управлять сложностью, минимизировать контекстные переключения и улучшать читаемость кода.
Основная часть: Что такое вертикальный кодбейс?
Вертикальный кодбейс — это подход к организации кода, при котором связанные части системы группируются вместе, а не распределяются по горизонтальным слоям (например, controllers, services, repositories). Это позволяет разработчикам работать с одной функциональной единицей, не переключаясь между разными слоями приложения.
Пример горизонтального кодбейса:
// controllers/userController.js
export const getUser = async (req, res) => {
const user = await userService.getUser(req.params.id);
res.json(user);
};
// services/userService.js
export const getUser = async (id) => {
return await userRepository.findById(id);
};
// repositories/userRepository.js
export const findById = async (id) => {
return db.query('SELECT * FROM users WHERE id = ?', [id]);
};
Пример вертикального кодбейса:
// users/getUser.js
export const getUser = async (req, res) => {
const user = await db.query('SELECT * FROM users WHERE id = ?', [req.params.id]);
res.json(user);
};
В вертикальном подходе весь код, связанный с функциональностью получения пользователя, находится в одном файле. Это уменьшает cognitive load и улучшает colocation.
Практическое применение
1. Минимизация Cognitive Load
Когда разработчику не нужно переключаться между разными файлами и слоями приложения, он может сосредоточиться на конкретной задаче. Это особенно важно в командах, где каждый разработчик работает над разными частями системы.
2. Улучшение Colocation
Colocation — это принцип, при котором связанные части кода находятся рядом друг с другом. В вертикальном кодбейсе это достигается естественным образом, так как весь код, относящийся к одной функциональности, находится в одном месте.
3. Повышение Cohesion
Cohesion (сцепление) — это мера того, насколько сильно связаны элементы внутри модуля. Вертикальный кодбейс способствует высокой cohesion, так как все связанные элементы находятся в одном модуле.
4. Упрощение тестирования
Тестировать вертикальный кодбейс проще, так как все зависимости и логика находятся в одном месте. Это позволяет писать более компактные и понятные тесты.
// users/getUser.test.js
import { getUser } from './getUser';
test('getUser returns user data', async () => {
const req = { params: { id: 1 } };
const res = { json: jest.fn() };
await getUser(req, res);
expect(res.json).toHaveBeenCalledWith({ id: 1, name: 'John Doe' });
});
Заключение
Вертикальный кодбейс — это не просто новая мода, а реальный инструмент для управления сложностью в современных приложениях. Он помогает минимизировать cognitive load, улучшить colocation и повысить cohesion. Если вы еще не пробовали этот подход, возможно, стоит начать с небольшого модуля в вашем проекте и оценить его преимущества на практике.
В эпоху AI и автоматизации, когда инструменты могут генерировать код и помогать в разработке, важно сохранить человекочитаемость и простоту поддержки. Вертикальный кодбейс — это шаг в правильном направлении.