Hacker News Digest

Тег: #refactoring

Постов: 2

Show HN: Swimming in Tech Debt (helpthisbook.com)

Погружён в технический долг
Книга-манифест о том, как разработчики и компании увязают в «техдолге» и выбираются из него.

  • Что такое техдолг?
    Упрощения в коде, которые экономят время сейчас, но замедляют работу потом.

  • Почему он растёт?
    Жёсткие дедлайны, отсутствие тестов, «потом поправим».

  • Как измерить?
    Метрики времени на исправление багов, частота откатов, удовлетворённость команды.

  • Как уменьшить?

    1. Выделять 20 % времени на рефакторинг.
    2. Писать тесты до кода (TDD).
    3. Проводить ревью каждого PR.
    4. Удалять мёртвый код.
  • Культура
    Признайте проблему публично, отпразднуйте первый «день выплаты долга».

by loumf • 05 сентября 2025 г. в 05:33 • 106 points

ОригиналHN

#technical-debt#software-development#refactoring#tdd#code-review

Комментарии (62)

  • Читатели спорят: кто-то хвалит тему и пользу книги, кто-то ругает «воду», анекдотичность и сомневается в ИИ-авторстве.
  • Критикуют метафору «плавание против течения» и длинные главы; просят внятную структуру и кликабельное оглавление.
  • Автор (loumf): 18 месяцев писал без ИИ, 4 раунда редакторов, половина текста за 1 $ – чтобы покупали только заинтересованные.
  • Печать через месяц; Show HN подача съехала в обычную.
  • Вывод: тема ценна, но подача и навигация пока спорны – автор собирает конструктив и правит.

Improvements to OCaml code editing: the basics of a refactor engine (tarides.com)

  • Цель стажировки – заложить основу для системы рефакторинга в Merlin, вдохновлённой IntelliJ и Gleam.

  • Первый эксперимент – команда «вынести выражение на верхний уровень» (extract to toplevel).

  • Как работает

    1. Выделяется наибольшее выражение внутри выбранного фрагмента.
    2. Оно переносится в новое let-связывание на уровень выше.
    3. Если выражение не чистое, создаётся thunk unit -> …, чтобы сохранить семантику.
    4. Свободные переменные превращаются в параметры новой функции.
  • Примеры

    • Константа 3.14159let const_name1 = 3.14159.
    • print_endline внутри блока → оборачивается в fun () -> ….
    • a + b + c + (c * x * y) + z → функция, принимающая x, y, a, b, c.
  • Результат – работающий прототип, готовый к расширению другими командами.

by nukifw • 20 августа 2025 г. в 13:37 • 89 points

ОригиналHN

#ocaml#refactoring#merlin#intellij#gleam#vim#vscode#emacs#fsharp

Комментарии (16)

  • Участники рады появлению базового рефакторинга «extract expression» и обсуждают, какие более продвинутые преобразования (например, map ↔ for) хотели бы видеть.
  • Уточняли, будет ли автоматически заменяться одинаковый код в той же области видимости: пока нет, чтобы не «угадать» намерения пользователя.
  • Кто-то делится самописными vim-скриптами для поиска и рефакторинга, работающими на любом языке.
  • Поднимался вопрос о поддержке VS Code: разработчики утверждают, что вкладывают время и в VS Code, и в Emacs, но Emacs проще расширять.
  • Обсуждали родство OCaml и F#, а также возможность использования ИИ для крупных рефакторингов.