Hacker News Digest

Тег: #intellij

Постов: 2

Code review can be better (tigerbeetle.com) 🔥 Горячее 💬 Длинная дискуссия

Код-ревью можно улучшить

Мы отложили эксперимент с git-review — инструментом, который делает ревью коммитом поверх PR.
Проблемы GitHub:

  • состояние ревью не хранится в репозитории;
  • всё через веб, с лагами и лишними кликами.

Локальный workflow
Я клонирую ветку, сбрасываю её, чтобы код выглядел «моим», и ревью в Magit: запускаю тесты, перехожу к определениям, помечаю файлы через git add -p.
Но оставлять замечания приходится в браузере: долго, неудобно, текстовое поле тормозит.

Идея git-review

  • ревью = коммит с комментариями вида // CR(name): …;
  • автор и ревьюер редактируют этот коммит (--force-with-lease);
  • по окончании добавляется revert-коммит, сохраняя историю.

Почему не зашло
Комментарии в коде — супер, но:

  • если меняешь код, комментарии смещаются и конфликтуют;
  • --force-with-lease добавляет трения;
  • нужен более мягкий merge для ревью, а не строгая цепочка хэшей.
    Довести до ума потребовало бы >500 строк «быстрого хака».

К тому же, в upstream-git может появиться Change-Id в стиле Gerrit, что изменит ландшафт.

by sealeck • 20 августа 2025 г. в 23:10 • 340 points

ОригиналHN

#git#magit#github#gerrit#intellij#vscode#code-review#pull-request

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

  • Основная боль: ревью приходит слишком поздно, заставляя переписывать всё с нуля.
  • Решения: локальное ревью в IDE (IntelliJ, VS Code), stacked-PR, «reviewer merges»-подход.
  • Инструменты: Gerrit, Phabricator, Graphite, GitButler, SourceHut, GitPatch, Tangled.
  • Надёжный Change-ID в Git обещает фиксить проблемы с force-push и interdiff.
  • Культура важнее инструментов: мелкие, самостоятельные коммиты, RFC-прототипы, совместное проектирование до кода.

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#, а также возможность использования ИИ для крупных рефакторингов.