# Избыток абстракций
Andrew Lobanov(tavern,1) — All
2024-09-27 13:26:55
Как бороться с сабжем в легаси-коде? Попадаются прямо такие вещи, что я проямо колдобюсь, когда сталкиваюсь.
Последнее из прекрасного, мьютекс со счётчиком локов, который нигде не используется.
Я ещё могу нафантазировать зачем нужен счётчик ReadLock'ов в RWMutex, но вот в самом обычном мьютексе это нафига? Причём реально по всему проекту этот счётчик не используется нигде.
А ведь для этого наверчена отдельная структура, у неё свои методы, реализующие интерфейс мьютекса, но так как нет в стандартной библиотеке интерфейса мьютекса, то наверчен свой интерфейс, но в итоге везде эти мьютексы летят через пустые интерфейсы.
И вот с одной стороны проделана работа (пусть и без результата, но кто его знает, что там в головах было в древности, может была какая-то красивая идея), а с другой стороны это всё бежит по пустым интерфейсом, ломая весь вкус статической типизации.
Извините, накипело. Я эту лабуду разматывал несколько часов только что, чтобы понять, что вообще такое мне в интерфейс падает, где оно описано и нафиг оно нужно.
# Re: Избыток абстракций
shaos(shaos, 2) — Andrew Lobanov
2024-09-27 19:25:21
> Как бороться с сабжем в легаси-коде?
Бороться надо на этапе разработки - надо становиться техлидом и пинать разрабов чтобы они не вылезали за рамки техзадания - многие молодые разработчики (особенно российские) норовят на любую тривиальную задачу нагородить «сферического коня в вакууме» - суперуниверсальное решение, которое не только поставленную задачу решает, но и любые другие сходные с ней или которые могут возникнуть на базе текущей задачи в ближайшую сотню лет - в итоге получается овердохера кода который может поддерживать только первоначальный автор, тем самым обеспечивая себе «job security»…
# Re: Избыток абстракций
Andrew Lobanov(tavern,1) — shaos
2024-09-28 08:41:04
>> Как бороться с сабжем в легаси-коде?
shaos> Бороться надо на этапе разработки
У меня нет машины времени, чтобы вернуться на шесть лет назад.
shaos> надо становиться техлидом и пинать разрабов чтобы они не вылезали за рамки техзадания
Обычно так и пишем. Но в старом коде море говнокода.
shaos> многие молодые разработчики (особенно российские) норовят на любую тривиальную задачу нагородить «сферического коня в вакууме» - суперуниверсальное решение, которое не только поставленную задачу решает, но и любые другие сходные с ней или которые могут возникнуть на базе текущей задачи в ближайшую сотню лет - в итоге получается овердохера кода который может поддерживать только первоначальный автор, тем самым обеспечивая себе «job security»…
Универсальность это хорошо. Только не ценой сложного и запутанного кода. Есть же, в конце концов, паттерны под это.
# Re: Избыток абстракций
shaos(shaos, 2) — Andrew Lobanov
2024-09-29 01:23:28
> У меня нет машины времени, чтобы вернуться на шесть лет назад.
Ну ой тогда :)
Если старый код работает, то не трогайте, а если глючит или тормозит, то аллоцируйте бюджет на "technical debt"...