Syntax highlighting is a waste of an information channel (2020) 🔥 Горячее
Синтаксическое выделение цветом полезно, но недоиспользует возможности цвета как канала информации. Цвет может нести гораздо больше информации, чем просто выделение синтаксиса. Например, можно использовать разные цвета, чтобы показать уровень вложенности скобок, что улучшает читаемость кода.
Другой пример — выделение импортов: можно подсвечивать идентификаторы, импортированные из других файлов, что помогает быстро понять зависимости. Также можно выделять аргументы функций иначе, чем локальные переменные, или использовать цвет для указания типов данных, даже если язык этого не требует.
Ещё одна идея — выделение функций, которые вызывают исключения, или функций, которые были изменены в последнее время. Это превращает подсветку из чисто декоративной функции в мощный инструмент для анализа кода и отладки.
Однако реализация таких функций сложна, так как требует доступа к AST и глубокого понимания кода, а не только лексического анализа. Кроме того, могут возникать конфликты, когда один элемент нужно выделить двумя разными способами одновременно. Нужно тщательно проектировать систему, чтобы избежать визуального хаоса.
В итоге, хотя современные IDE уже предоставляют некоторые из этих функций, мы далеки от полноценного использования цвета как информационного канала. Расширение этих возможностей может значительно улучшить читаемость и понимание кода.
Комментарии (134)
- Обсуждение показало, что большинство участников считают современные редакторы кода не используют цвет как информационный канал, а лишь как декоративный элемент.
- Участники подчеркнули, что вместо того, чтобы использовать цвет для передачи дополнительной информации, редакторы ограничиваются лишь базовой подсветкой синтаксиса.
- Некоторые участники упомянули, что такие вещи как подсветка потока данных, подсветка переменных и подсветка ошибок уже реализованы в таких IDE как IntelliJ IDEA, но не используются в других редакторах.
- Были также упомянуты такие вещи как подсветка важных частей кода, подсветка области видимости и подсветка неиспользуемого кода.
- Несколько участников выразили мнение, что цветовая схема должна быть более гибкой и адаптивной, чтобы отражать структуру и смысл кода, а не только его синтаксическую категорию.
Fernflower Java Decompiler
FernFlower — это декомпилятор от JetBrains, преобразующий байт-код Java обратно в читаемый исходный код. Он интегрирован в IntelliJ IDEA и известен высокой точностью восстановления логики, включая обработку исключений, циклов и локальных переменных. Инструмент активно используется разработчиками для анализа и отладки скомпилированных приложений, когда исходники недоступны.
Проект открыт под лицензией Apache 2.0, что позволяет свободно использовать и модифицировать код. Несмотря на конкуренцию с другими декомпиляторами, FernFlower выделяется качеством output’а и поддержкой современных функций Java. Практический плюс — его встроенная доступность в популярной IDE, что ускоряет работу без необходимости установки сторонних утилит.
Комментарии (36)
- Обсуждается Java-декомпилятор Fernflower (Vineflower), его история, технические особенности и превосходство над аналогами.
- Участники делятся опытом использования Fernflower и других инструментов (jadx для Android, dnSpy для .NET), отмечая их эффективность.
- Поднимаются технические вопросы: возможность повторной компиляции, работа с обфусцированным кодом, корректность отображения строк.
- Обсуждается потенциальное применение LLM для присвоения осмысленных имен переменным и рефакторинга декомпилированного кода.
- Упоминается создатель Fernflower и его другие проекты, а также доступные GUI-интерфейсы и веб-инструменты для работы с JAR-файлами.