2009-02-09 29 views
13

¿Existe una convención de nomenclatura/casing "oficial" para F #?F # convención de nomenclatura

siempre estoy en la duda de utilizar C# estilo o no:

Class.MyFunctionName or Module.my_function_name 

En F # que está destinado para mezclar clases de BCL y F queridos # biblioteca: tienen diferente carcasa y el código se ve muy feo.

Respuesta

19

Sí, hay confusión, ya que F # se ha transformado de OCaml a .NET largo de los años. Básicamente, las convenciones de nomenclatura son un "cambio de ruptura": el código anterior no es coherente con el código nuevo.

Sin embargo, el CTP de mayo de 2009 resolvió el problema.

El Release Notes dicen ...

biblioteca estándar de Convenciones de nomenclatura

Las convenciones de nomenclatura adoptadas para la biblioteca # F son los siguientes:

  • Todo .NET y C# El código OO usa PascalCase de acuerdo con las directrices .NET existentes

  • Los operadores de programación funcional F # como List.map son para usar en el código de implementación interna F #. Este tipo de código utiliza camelCase para los nombres de operador

  • No se deben usar los calificadores inferiores.

Por lo tanto, su pregunta ...

Class.MyFunctionName or Module.my_function_name 

La respuesta es

clase.MyFunctionName y Module.MyFunctionName

(aplicando la regla 1 anterior).

Todavía hay algo de confusión al compararlo con los operadores de programación F # (por ejemplo, List.averageBy), pero el código de producción F # debe usar CamelCase, y así parecerse al código .Net de todos los demás. En caso de duda, verifique el sample code para el CTP.

(personalmente like_the_caml_style, pero voy a tener que GetOverThat)

+1

Actualización: en la versión más reciente, las funciones to_type se han eliminado a favor de toType – Benjol

+0

Gracias. Para hacerlo simple, eliminé el texto que los menciona. –

1

Por lo que he visto de hubfs.com y otras fuentes, es una mezcla de .net y OCaml.

Espero que se cambien a uno y no tengan dos convenciones diferentes, y al ser Microsoft, estoy seguro de que irán con el estilo punto de red.

3

Cualquier cosa oficial: Creo que "todavía no", pero cada vez que VS 2010 llegue a Beta1 probablemente verá la biblioteca F # en su forma casi final, y habrá una serie de cambios de nombre relativos al CTP. F # probablemente siempre sea un poco más esquizofrénico que sus primos .NET más antiguos, dado su historial.

+0

Hola Brian, ¿qué quiere decir con "F # probablemente siempre será un poco más esquizofrénico que sus primos más viejos .NET, dada su historia"? Gracias. –

+2

Historial: F # se deriva de OCaml, y F # aún conserva un núcleo que es en gran parte compatible con OCaml. Pero OCaml tiene diferentes convenciones de nomenclatura que .Net. Entonces F # se tira en dos direcciones diferentes. – Brian

0

No estoy seguro de que haya una solución real. Parece que tal vez el código OCaml-ish podría conservar algunos de sus nombres, es decir, los métodos de módulo en minúsculas, mientras que los miembros OO irán en estilo .NET.

1

Mi comprensión y uso actual es que las funciones de módulo/estáticas tienen minúsculas, y las funciones de 'instancia' tienen mayúsculas.

Editar no una respuesta a esta pregunta, pero relacionados: F# Formatting conventions por Don Syme

Cuestiones relacionadas