---
title: "Поток лавы (программирование)"
type: "antipattern"
slug: "lava-flow"
url: "http://localhost:3000/ru/antipatterns/lava-flow.md"
description: "Проблема развёртывания незавершённого ПО"
---
# Поток лавы (программирование)

> Проблема развёртывания незавершённого ПО

На [жаргоне](https://en.wikipedia.org/wiki/Jargon "Jargon") [компьютерного программирования](https://en.wikipedia.org/wiki/Computer%5Fprogramming "Computer programming") **поток лавы** — это [антипаттерн](https://en.wikipedia.org/wiki/Anti-pattern "Anti-pattern"), возникающий, когда [исходный код](https://en.wikipedia.org/wiki/Source%5Fcode "Source code"), написанный в неоптимальных условиях, развёртывается в продакшен-окружении и затем расширяется, всё ещё оставаясь в недоработанном состоянии. Термин происходит от природного явления — лавы, которая, остыв, застывает в трудноудаляемую породу. Аналогично такой код становится трудно рефакторить или заменять из-за зависимостей, возникающих со временем, что вынуждает поддерживать обратную совместимость с исходным незавершённым дизайном.

## Причины

**Поток лавы** может возникать по множеству причин в рамках [процесса разработки ПО](https://en.wikipedia.org/wiki/Software%5Fdevelopment%5Fprocess "Software development process"):

* Давление сроков, из-за которого временные решения становятся постоянными
* Недостаточная документация, мешающая понять назначение кода
* Отсутствие автоматических тестов, делающее рефакторинг рискованным
* Частые изменения в составе команды разработки, ведущие к потере знаний

## Последствия

Недоработанный код, становящийся частью инфраструктуры ПО, повышает сложность системы, и кодовую базу становится всё труднее понимать и сопровождать. Это приводит к:

* Необходимости [обратной совместимости](https://en.wikipedia.org/wiki/Backward%5Fcompatibility "Backward compatibility"), которая может душить инновации и препятствовать внедрению более новых, более эффективных решений
* Росту [технического долга](https://en.wikipedia.org/wiki/Technical%5Fdebt "Technical debt"), накапливающегося со временем и приводящего к более высокой стоимости изменений и сопровождения
* Препятствиям для [рефакторинга](https://en.wikipedia.org/wiki/Refactoring "Refactoring") или улучшения системы из-за страха сломать зависимые компоненты

## Влияние на команды

Команды разработки часто ощущают влияние **потока лавы**, когда участники приходят и уходят:

* Потеря знаний об аспектах кода системы, когда уходят первоначальные разработчики
* Нежелание новых разработчиков рефакторить незнакомый код, что ведёт к дальнейшему усложнению, поскольку они добавляют, а не наводят порядок

## Стратегии снижения вреда

Несколько практик способны смягчить эффекты антипаттерна **поток лавы**:

* Продвижение хороших практик документирования для ясного понимания кода
* Поощрение регулярных [код-ревью](https://en.wikipedia.org/wiki/Code%5Freview "Code review"), чтобы рано выявлять неоптимальные практики
* Приоритизация [рефакторинга](https://en.wikipedia.org/wiki/Refactoring "Refactoring") как неотъемлемой части жизненного цикла разработки
* Поддержание полноценного набора [автоматических тестов](https://en.wikipedia.org/wiki/Automated%5Ftest "Automated test") для снижения риска при изменениях
