Show HN: Swimming in Tech Debt
Погружён в технический долг
Книга-манифест о том, как разработчики и компании увязают в «техдолге» и выбираются из него.
-
Что такое техдолг?
Упрощения в коде, которые экономят время сейчас, но замедляют работу потом. -
Почему он растёт?
Жёсткие дедлайны, отсутствие тестов, «потом поправим». -
Как измерить?
Метрики времени на исправление багов, частота откатов, удовлетворённость команды. -
Как уменьшить?
- Выделять 20 % времени на рефакторинг.
- Писать тесты до кода (TDD).
- Проводить ревью каждого PR.
- Удалять мёртвый код.
-
Культура
Признайте проблему публично, отпразднуйте первый «день выплаты долга».
Комментарии (62)
- Читатели спорят: кто-то хвалит тему и пользу книги, кто-то ругает «воду», анекдотичность и сомневается в ИИ-авторстве.
- Критикуют метафору «плавание против течения» и длинные главы; просят внятную структуру и кликабельное оглавление.
- Автор (loumf): 18 месяцев писал без ИИ, 4 раунда редакторов, половина текста за 1 $ – чтобы покупали только заинтересованные.
- Печать через месяц; Show HN подача съехала в обычную.
- Вывод: тема ценна, но подача и навигация пока спорны – автор собирает конструктив и правит.
Improvements to OCaml code editing: the basics of a refactor engine
-
Цель стажировки – заложить основу для системы рефакторинга в Merlin, вдохновлённой IntelliJ и Gleam.
-
Первый эксперимент – команда «вынести выражение на верхний уровень» (extract to toplevel).
-
Как работает
- Выделяется наибольшее выражение внутри выбранного фрагмента.
- Оно переносится в новое
let
-связывание на уровень выше. - Если выражение не чистое, создаётся thunk
unit -> …
, чтобы сохранить семантику. - Свободные переменные превращаются в параметры новой функции.
-
Примеры
- Константа
3.14159
→let const_name1 = 3.14159
. print_endline
внутри блока → оборачивается вfun () -> …
.a + b + c + (c * x * y) + z
→ функция, принимающаяx, y, a, b, c
.
- Константа
-
Результат – работающий прототип, готовый к расширению другими командами.
Комментарии (16)
- Участники рады появлению базового рефакторинга «extract expression» и обсуждают, какие более продвинутые преобразования (например, map ↔ for) хотели бы видеть.
- Уточняли, будет ли автоматически заменяться одинаковый код в той же области видимости: пока нет, чтобы не «угадать» намерения пользователя.
- Кто-то делится самописными vim-скриптами для поиска и рефакторинга, работающими на любом языке.
- Поднимался вопрос о поддержке VS Code: разработчики утверждают, что вкладывают время и в VS Code, и в Emacs, но Emacs проще расширять.
- Обсуждали родство OCaml и F#, а также возможность использования ИИ для крупных рефакторингов.