Почему доступ к элементу массива по индексу выполняется за константное время

Ответ

Ответ не найден

Ответ 18+ 🔞

А, ну это же про тот самый случай, когда твой код работает, но ты сам уже нихуя не понимаешь, как и почему. Ёпта, классика жанра.

Вот представь: пишешь ты функцию, вроде всё логично, запускаешь — работает. Проходит месяц, полгода, год. Ты уже про неё забыл, как про вчерашний сон. А потом бац — нужно что-то поменять или пофиксить. Открываешь, смотришь на этот код... и наступает полное, абсолютное, пиздецкое удивление.

Сам от себя охуел. Серьёзно. Смотрю на строчки, которые сам же и написал, и думаю: «Какого хуя? Это что за мудя здесь происходит? Кто этот гений, который додумался вот так вот, через жопу, всё связать?» А потом с ужасом вспоминаю, что этот гений — я сам, только полгода назад, после трёх чашек кофе и с дедлайном на шее.

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

const activeUsers = allUsers
  .filter(u => u.isActive && !u.isBanned)
  .sort((a, b) => new Date(b.registeredAt) - new Date(a.registeredAt))
  .map(u => ({ name: u.name, id: u.id }));

Смотришь на это сейчас и думаешь: «Ну вроде норм, ёклмн». А потом видишь, что в трёх разных местах проекта есть ещё три почти таких же функции, но с мелкими отличиями: в одной нет проверки на бан, в другой сортировка по имени, а в третьей ещё и телефоны вытаскиваются. И все они, блядь, написаны вручную, копипастой. Доверия ебать ноль к тому челу, которое это сотворило (то есть ко мне в прошлом).

И вот тут приходит осознание: нужно было не хернёй страдать, а вынести эту логику в одну переиспользуемую функцию, куда параметрами передавать критерии фильтрации, сортировки и маппинга. Но нет, «и так сойдёт», «работает же». А теперь сиди и рефактори овердохуищу одинакового кода. Ебать колотить, как же бесит этот распиздяйский подход.

Мораль истории, чувак, простая, но важная, как хуй с горы: даже если задача кажется простой и одноразовой, пиши код так, будто его завтра будет читать и менять психопат, который знает, где ты живёшь. И этот психопат, скорее всего, снова будешь ты сам, только более уставший и циничный. Не создавай себе же проблем на ровном месте, а то потом только и останется, что материться и переделывать. В рот меня чих-пых, учись на чужих косяках, желательно на моих.