Re[11]: MS забило на дотнет. Питону - да, сишарпу - нет?
От: vdimas Россия  
Дата: 28.07.21 12:09
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

V>>Давно последний раз на Resharper C++ смотрел?

НС>Никакой чудо решарпер не поможет сделать С++ столь же пригодным к рефакторингу, как C# или Java.

Вдогонку, немного технических подробностей.

Сложность автокомплита, навигации и рефакторинга С++ в сравнении с C# или Java возражений никогда не вызывала.

Сложность эта заключается в системе препроцессора, который подключает файлы через include и раскрывает макроопределения.
В итоге возможна ситуация, когда в зависимости от определений символов, "смысл" одного и того же подключаемого из разных мест файла может изменяться.
Эта сложность объективная, но не непреодолимая.

Напомню, что в C# тоже есть возможность подключать одни и те же физические файлы в разные проекты и тоже можно воссоздать ситуацию, когда одни и те же символы имеют в таком многократно подключенном файле разный смысл. Чтобы корректно разбираться со "смыслом" таких файлов, Решарперу необходима информация из файлов проектов C#.

Аналогично он поступает с проектами С++ — разбирает файлы проектов и в точности знает значения всех символов во всех версиях одного и того же файла.
Разумеется, подхватывает так же настройки самой среды разработки и переменные среды, т.к. и там и там обычно содержится информация (или часть её) о внешних зависимостях.
Еще рядом упоминал, что Решарпер С++ и CLion отлично "вынюхивает" Make и CMake-файлы, теперь не хуже чем формат MSBuild для C#/C++, т.е. теперь он способен построить точную модель кода для различных видов проектов, что и требуется для точной навигации/автокомплита/рефакторинга.

Рзумеется, задача эта оказалось более сложной, чем для C# или Java, но они её решили, респект.

Да, в процессе рефакторинга такие подключаемые из разных мест файлы, "меняющие свой смысл", могут утрачивать валидность.

Происходящее в этом случае аналогично кейзу для C#, когда один и тот же файл подключается из разных проектов, т.е. поведение Решарпера для двух этих языков аналогично — на этапе предпросмотра изменений он сигнализирует о будущих ошибках в коде в результате рефакторинга, давая возможность отметить или нет те места, которые можно скипнуть в процессе рефакторинга и/или вообще согласиться или нет с происходящим.

А да, вдогонку.
Еще же Решарпер делает анализ кода и много чего подсказывает:
https://www.jetbrains.com/clion/whatsnew/
Отредактировано 28.07.2021 18:09 vdimas . Предыдущая версия . Еще …
Отредактировано 28.07.2021 12:24 vdimas . Предыдущая версия .
Отредактировано 28.07.2021 12:10 vdimas . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.