---
title: "Якорь для лодки (метафора)"
type: "antipattern"
slug: "boat-anchor"
url: "http://localhost:3000/ru/antipatterns/boat-anchor.md"
description: "Метафора для устаревшего оборудования"
---
# Якорь для лодки (метафора)

> Метафора для устаревшего оборудования

В [любительской радиосвязи](https://en.wikipedia.org/wiki/Amateur%5Fradio "Amateur radio") и [вычислительной технике](https://en.wikipedia.org/wiki/Computing "Computing") **якорь для лодки** (англ. _boat anchor_ или _boatanchor_) — это нечто устаревшее, бесполезное и громоздкое – так называемое потому, что метафорически его единственное полезное применение — быть брошенным в воду в качестве [причального устройства](https://en.wikipedia.org/wiki/Mooring%5F%28watercraft%29 "Mooring (watercraft)") для лодки. Похожи такие термины, как **[кирпич](https://en.wikipedia.org/wiki/Brick%5F%28electronics%29 "Brick (electronics)")**, **дверной упор** и **пресс-папье**.

## Любительская радиосвязь

В [любительской радиосвязи](https://en.wikipedia.org/wiki/Amateur%5Fradio "Amateur radio") _якорь для лодки_ — это старое [радио](https://en.wikipedia.org/wiki/Radio "Radio")оборудование. Обычно так называют большое, тяжёлое радиооборудование прежних десятилетий, использовавшее лампы. В этом контексте _якоря для лодок_ часто высоко ценятся своими владельцами, а их достоинства (например, устойчивость к [ЭМИ](https://en.wikipedia.org/wiki/Nuclear%5Felectromagnetic%5Fpulse "Nuclear electromagnetic pulse")) подчёркиваются, даже если более новое оборудование обладает большими возможностями.

Раннее употребление термина встречается в выпуске журнала _[CQ Amateur Radio](https://en.wikipedia.org/wiki/CQ%5FAmateur%5FRadio "CQ Amateur Radio")_ за 1956 год. В журнале было опубликовано письмо читателя, искавшего «схемы или данные для переделки» военного избыточного [приёмопередатчика](https://en.wikipedia.org/wiki/Transceiver "Transceiver") [Wireless Set No. 19](https://en.wikipedia.org/wiki/Wireless%5FSet%5FNo.%5F19 "Wireless Set No. 19") MK II, чтобы переделать его для работы в любительских диапазонах. Редактор добавил такой ответ:

> «Единственная переделка, которая, похоже, имеется у нас в архивах CQ, требует 100 футов однодюймового манильского троса, один конец которого надёжно привязывается к приёмопередатчику MK II. После этого устройство превращается в отличный якорь для небольшой лодки. Если у кого-то из читателей есть переделки получше, мы будем рады о них услышать. — Ред.»

— [CQ: The Radio Amateurs' Journal](https://en.wikipedia.org/wiki/CQ:%5FThe%5FRadio%5FAmateurs%27%5FJournal "CQ: The Radio Amateurs' Journal"), октябрь 1956

Употребление редактором этого термина вызвало некоторый интерес читателей, и в феврале 1957 года CQ опубликовал продолжение истории с фотографиями.

## Компьютеры

Метафора напрямую переносится со старых радиоприёмников на старые компьютеры. Она также была расширена для обозначения реликтового программного обеспечения.

### Оборудование

Ранние [компьютеры](https://en.wikipedia.org/wiki/Computing "Computing") были физически большими и тяжёлыми устройствами. По мере того как компьютеры становились компактнее, термин _якорь для лодки_ стал популярен среди пользователей для обозначения того, что прежнее, более громоздкое компьютерное оборудование устарело и больше не приносит пользы.

### Программное обеспечение

Термин _якорь для лодки_ был расширен и на [программный](https://en.wikipedia.org/wiki/Software "Software") [код](https://en.wikipedia.org/wiki/Source%5Fcode "Source code"), который оставляют в [кодовой базе](https://en.wikipedia.org/wiki/Codebase "Codebase") системы, обычно на случай, если он понадобится позже. Это пример [антипаттерна](https://en.wikipedia.org/wiki/Anti-pattern "Anti-pattern"), и поэтому он может создать множество проблем для тех, кто пытается сопровождать [программу](https://en.wikipedia.org/wiki/Computer%5Fprogram "Computer program"), содержащую устаревший код. Ключевая проблема в том, что программистам будет трудно отличить устаревший код, который ничего не делает, от рабочего кода, который работает.

Например, программист может разбираться с ошибкой в системе обработки ввода программы, поэтому он ищет в коде те фрагменты, которые связаны с [API](https://en.wikipedia.org/wiki/API "API") обработки ввода. Очевидно, что если программист наткнётся на устаревший код обработки ввода, он вполне может начать его править и отлаживать, тратя ценное время, прежде чем поймёт, что код, с которым он работает, никогда не выполняется и потому не является частью проблемы, которую он пытается решить. К другим проблемам относятся увеличенное время компиляции и риск того, что программисты случайно свяжут рабочий код с заброшенным, непреднамеренно его воскресив.

Рекомендуемое решение для работы с «якорями для лодки» в исходном коде — удалить их из кодовой базы и поместить в отдельное место, чтобы при необходимости к ним можно было обратиться, но они не компилировались и не принимались за «рабочий» код. (Например, удалить их, зная, что они хранятся в [системе контроля версий](https://en.wikipedia.org/wiki/Source%5Fcontrol "Source control") проекта.)
