F#命名惯例

问题描述 投票:0回答:4
有f#的“官方”命名 /套管大会 我总是怀疑使用C#样式是否有疑问:

Class.MyFunctionName or Module.my_function_name

在f#您打算混合BCL类和F#库:它们的外壳不同,代码看起来很丑陋。
	
yyes,有混乱,因为多年来F#从Ocaml变成了.NET。基本上,命名约定是“打破变化” - 旧代码与新代码不一致。

,但是,2009年5月的CTP解决了这一问题。

报道说...
.net f# naming-conventions
4个回答
27
投票

标准图书馆命名约定

为f#库采用的命名约定如下:

所有.NET和F#OO代码根据现有的.NET指南使用Pascalcase

f#功能编程操作员,例如list.map用于f#内部实现代码中。这种代码将骆驼用于操作员名称

    不应使用underscores。
  • ,您的问题...

  • Class.MyFunctionName or Module.my_function_name
  • 答案是

Class.myFunctionName和Module.MyFunctionName(
但请参见下面的编辑!

(上述规则1)。
-编辑。 2019年11月2日 -

电流指南
推荐骆驼在模块级别上的功能,因此

module.myFunctionName

然后使生产代码与f#库一致(例如list.averageby)

我认为自当前接受的答案以来的答案可能已经发生了变化。

f#样式指南今天说:

使用pascalcase用于类型声明,成员和标签

类,接口,结构,枚举,委托,记录和 歧视工会都应以Pascalcase的名字命名。成员 在类型和标签中以供记录和歧视工会 也使用pascalcase.


8
投票

https://learn.microsoft.com/en-us/dotnet/fsharp/style-guide/formatting#use-pascalcase-for-type-declarations-declarations-members-members-members-members

使用骆驼用于模块结合的公共功能

当模块结合功能是公共API的一部分时,它应该使用 骆驼:f#
module MyAPI =
    let publicFunctionOne param1 param2 param2 = ...

    let publicFunctionTwo param1 param2 param3 = ...

Https://learn.microsoft.com/en-us/dotnet/fsharp/style-guide/formatting#use-camelcase-for-module-module-bound-public-functions

,基于这些,我的回答是:

Class.MyFunctionName Module.my_function_name 应该这样写:

Class.MyFunctionName Module.myFunctionName


任何官员:我认为“还不是”,但是每当VS 2010到达Beta1时,您可能会以其接近决赛的形式看到F#库,并且相对于CTP,将会有许多更名。  鉴于其历史,F#可能总是比其较旧的表兄弟更精神分裂。
    

我的理解和当前用法是模块/静态功能的情况较低,并且“实例”功能具有较高的情况。

eDit

不是对这个问题的答案,而是相关的:

f#格式化惯例
    

从我从Hubfs.com和其他来源看到的内容中,它来自.NET和OCAML。
我希望他们切换到任何一个,并且没有两个不同的约定,并且成为微软,我相信他们会使用点网样。 

3
投票

确定有任何真正的解决方案。似乎Ocaml-ish代码可能会保留其某些命名,即小写模块方法,而OO成员将使用.NET样式。


2
投票

A very useful table of F# naming conventions can be fount at

https://learn.microsoft.com/en-us/dotnet/fsharp/style-guide/component-design-guidelines#guidelines-for-f-facing-库

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.