2015-12-01 2 views
2

Какие риски связаны с работой в магазине C#, и я пытаюсь написать функцию в F #, а затем полагаться на ILSpy, чтобы перевести исходный код F # в представление C#?Какие риски существуют, если я работаю в магазине C# и пытаюсь написать F # только для того, чтобы полагаться на ILSpy для преобразования?

+11

У вас наверняка будет нечитаемый и недостижимый код C# – Petr

+9

В этом сообщении в блоге есть много хороших идей относительно способов с низким уровнем риска, начиная с F # на работе: http://fsharpforfunandprofit.com/series/low-risk-ways-to -use-fsharp-at-work.html Использование ILSpy для преобразования F # в C#, определенно, не является одним из них. –

ответ

9

Я бы очень рекомендовал против этого.

  • Код F #, который был декомпилирован в C#, имеет тенденцию быть чрезвычайно подробным и нечитаемым. Это будет почти невозможно для тех, у кого нет копии исходного кода F # для понимания или поддержки.
  • Функциональный код дает вам возможность повторного использования кода, которого у вас не было бы на языке OO. Код C#, созданный путем декомпиляции, вероятно, не предложит (m) любые способы повторного использования за пределами вашего декомпилированного F #.
  • Что такое идиоматика в F #, иногда не в C#, это особенно верно после промежуточной стадии декомпиляции. Код, скорее всего, не пройдет процесс обзора.
  • Единицы измерения и inline Функции с ограничениями статического типа - это обе функции компилятора F #, а не что-то, предоставленное .NET. Вы можете получить от них, используя декомпилированный C# напрямую, но любые изменения, внесенные в источник C#, не будут проверяться, например. мерной правильности.

Я хотел бы также второе предложение Томаса в том, прочитанный в этой статье: http://fsharpforfunandprofit.com/posts/low-risk-ways-to-use-fsharp-at-work/

Я хотел бы предложить, однако, что это может быть стоит иметь разговор с вашей командой/менеджер (ы) по поводу возможность введения F # на вашем рабочем месте.

Мой личный опыт использования F # на коммерческой основе заключается в том, что время разработки часто имеет тенденцию быть короче (иногда существенно) по сравнению с тем же проектом, что и на C#, и обычно легче проверить и проверить результат. Это преимущества, которые очень привлекательны в коммерческих целях.

+0

Спасибо InnerLight. Должен ли я сначала написать поддержку автоматизации тестирования на этом языке, прежде чем запрашивать разрешение на внедрение с ним бизнес-решений? –

+2

@ScottNimrod Мне сложно дать вам советы о том, как вы должны действовать, когда дело касается вашей компании, в конечном итоге вы знаете свою команду лучше, чем я. Тем не менее, все, что вы можете сделать, чтобы продемонстрировать бизнес-ценность использования F #, поможет вам в этом. Если вы думаете, что это будет трудная продажа, я бы держался, пока не будет ситуации, когда вы знаете, что FP/F # действительно превзойдет. В некоторых случаях это действительно очевидно, что это лучший выбор для выражения конкретной проблемы, в других случаях это может быть менее очевидным для тех, у кого практически нет опыта F #. – TheInnerLight

Смежные вопросы