Как стать автором
Обновить

Комментарии 5

Интересная статья, спасибо.

Только вот… legacy, которое написано на .net — завидую чёрной завистью. А подключаемые к .net C/C++ библиотеки, написанные на колене людьми, которые не знали, как работать с указателями? Нет, это на самом деле ещё хорошо, я люблю C++. А куски на древнем языке TFM?.. :-)

Грубо говоря всё, что можно распарсить в AST — всё можно рефакторить с помощью аналогичного подхода. Ну то есть вот трансляторы, да. Универсальный транслятор из одного языка в другой сделать сложно. Но для какого-то конкретного случая — вполне возможно. Даже для TFM :)

У нас похожая история. Куча COM-объектов на С++ и VB (Не .NET). И все это через интеропы используется в .NET программах и сервисах (facepalm)

Однажды, много лет назад решал задачу избавления от VB.NET.

Примерно такой же объем кода и примерно такой же результат по трудозатратам. Только все это было в эру до Roslyn... Я тогда извернулся то ли через dotPeek, то ли через ILDasm, то ли через Reflector. Короче собрал VB в dll, разобрал уже в C#. Прошло довольно гладко. Что-то ещё глазами по мелочи подправил и все запело.

Подход понятен, имеет право на жизнь если в коде нет каких-то диких конструкций вроде сложного LINQ, dynamic-ов или анонимных классов. Тут было важно как можно точнее передать первозданный код, сохраняя комментарии чтобы команда не потерялась.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации