HeadlinesBriefing favicon HeadlinesBriefing.com

Аргументы функций против цветов

Hacker News •
×

В дебатах о цветах функций некоторые утверждают, что аргументы функций могут быть цветами, ссылаясь на значение контекста в Go как пример. Контекст управляет таймаутами и отменой и предназначен для передачи через функции, даже если он не используется напрямую. Как только функция использует контекст, вы должны передавать его всем вызываемым функциям, что поверхностно выглядит как цвет.

Однако, если бы все параметры были цветами, эта концепция не была бы изобретена через 50+ лет после функций. Async имеет отличную природу, которую стоит зафиксировать. Для ясности рассмотрим граф зависимостей изменений: изменение атрибута функции в глубине стека вызовов может повлиять на вызывающие функции тремя способами: без изменения вызывающего, прямое изменение вызывающего или изменение всех функций в стеке.

Цвет заставляет все вышестоящие функции реагировать, тогда как обычное изменение распространяется только на вызывающего и может быть перехвачено. На практике функции разрывают цепочку, изолируя вышестоящие функции от нижестоящих изменений. Структурное программирование существует для изоляции изменений, и если бы каждое изменение параметра заставляло изменения во всем стеке, это было бы неуправляемо.