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

标签 f# inline cil decompiler ilspy

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

最佳答案

我强烈建议不要这样做。

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

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

不过,我建议与您的团队/经理就在您的工作场所引入 F# 的可能性进行对话可能是值得的。

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

关于f# - 如果我在 C# 商店工作并尝试编写 F# 只是为了依赖 ILSpy 进行转换,存在哪些风险?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34026276/

相关文章:

f# - 在 F# 中使用元组分组

f# - F# 中的 ToString() 覆盖不适用于包含另一种类型的类型

c++ - 内联函数和静态内联函数之间的区别

html - 行为异常的 block 元素

.net - 发出IL以调用Math函数

c# - 在哪里可以找到有关 .NET 中多维 System.Array 实例的 Get、Set 和 Address 方法的信息?

c# - 我怎样才能阻塞直到第一个线程完成?

f# - 嵌套类型提供者

CSS 显示 : online; not working in IE7

c# - DLR 表达式中的 "code as data"在哪里?