如果我在 C# 商店工作并尝试编写 F# 只是为了依赖 ILSpy 进行转换,存在哪些风险?

What risks exist if I work in a C# shop and attempt to write F# just to rely on ILSpy for conversion?

如果我在 C# 商店工作并尝试用 F# 编写功能然后依靠 ILSpy 将 F# 源代码转换为 C# 表示形式,会涉及哪些风险?

我强烈建议不要这样做。

  • 反编译为 C# 的 F# 代码往往极其冗长且不可读。任何不拥有原始 F# 代码副本的人都几乎不可能理解或维护。
  • 函数式代码为您提供了在 OO 语言中无法实现的代码重用机会。反编译生成的 C# 代码可能不会提供 (m) 任何超出反编译 F# 边界的重用途径。
  • F# 中惯用的东西有时在 C# 中并不适用,在反编译的中间阶段之后尤其如此。该代码可能不会通过审查过程。
  • 度量单位和具有静态类型约束的 inline 函数都是 F# 编译器的功能,而不是 .NET 提供的功能。通过直接使用反编译的 C#,您可能会从中获得 一些 优势,但不会检查对 C# 源代码所做的任何修改,例如尺寸正确性。

我也同意 Tomas 的建议,通读这篇文章:http://fsharpforfunandprofit.com/posts/low-risk-ways-to-use-fsharp-at-work/

不过,我建议与您的 team/manager(s) 就在您的工作场所引入 F# 的可能性进行对话可能是值得的。

我在商业上使用 F# 的个人经验是,与使用 C# 完成的同一项目相比,开发时间往往更短(有时甚至更短),而且通常更容易验证和测试结果。这些都是在商业上非常有吸引力的优势。