F#Guía de estiloF# style guide

Los siguientes artículos describen las directrices para dar formato a F# código e instrucciones temático para características del lenguaje y cómo debe usarse.The following articles describe guidelines for formatting F# code and topical guidance for features of the language and how they should be used.

Esta guía se ha formulado según el uso de F# en grandes bases de datos con un amplio grupo de programadores.This guidance has been formulated based on the use of F# in large codebases with a diverse group of programmers. Esta guía suele lleva al uso correcto de F# y minimiza las frustraciones cuando cambian los requisitos para los programas con el tiempo.This guidance generally leads to successful use of F# and minimizes frustrations when requirements for programs change over time.

Cinco principios del buen F# códigoFive principles of good F# code

Tenga los siguientes principios en cuenta cada vez que escriba F# código, especialmente en sistemas que cambiará con el tiempo.Keep the following principles in mind any time you write F# code, especially in systems that will change over time. Cada parte de las instrucciones de otros artículos proviene de estos cinco puntos.Every piece of guidance in further articles stems from these five points.

  1. Buena F# código es sucinto, expresivo y que admite composiciónGood F# code is succinct, expressive, and composable

    F#tiene muchas características que le permiten expresar acciones en menos líneas de código y volver a usar la funcionalidad genérica.F# has many features that allow you to express actions in fewer lines of code and reuse generic functionality. El F# biblioteca principal también contiene muchos tipos útiles y funciones para trabajar con colecciones comunes de datos.The F# core library also contains many useful types and functions for working with common collections of data. Composición de sus propias funciones y los de la F# biblioteca básica (u otras bibliotecas) son una parte de la rutina idiomático F# de programación.Composition of your own functions and those in the F# core library (or other libraries) is a part of routine idiomatic F# programming. Como norma general, si puede expresar una solución a un problema en menos líneas de código, otros desarrolladores (o su futura self) será puedan apreciarse.As a general rule, if you can express a solution to a problem in fewer lines of code, other developers (or your future self) will be appreciative. Se recomienda encarecidamente también usa una biblioteca como FSharp.Core, el grandes bibliotecas de .NET que F# se ejecuta, o un paquete de terceros en NuGet cuando necesite realizar una tarea no trivial.It's also highly recommended that you use a library such as FSharp.Core, the vast .NET libraries that F# runs on, or a third-party package on NuGet when you need to do a nontrivial task.

  2. Buena F# código es interoperableGood F# code is interoperable

    Interoperación puede tomar varias formas, incluyendo usar código en diferentes idiomas.Interoperation can take multiple forms, including consuming code in different languages. Los límites del código que interoperan con los otros llamadores son piezas fundamentales para realizar correctamente, incluso si los llamadores estén además en F#.The boundaries of your code that other callers interoperate with are critical pieces to get right, even if the callers are also in F#. Al escribir F#, siempre se debe pensar acerca de cómo otro código llamará en el código que se va a escribir, incluido si lo hacen desde otro lenguaje como C#.When writing F#, you should always be thinking about how other code will call into the code you're writing, including if they do so from another language like C#. El F# pautas de diseño de componentes describir en detalle la interoperabilidad.The F# Component Design Guidelines describe interoperability in detail.

  3. Buena F# código hace que el uso de la programación de objetos, el objeto no orientaciónGood F# code makes use of object programming, not object orientation

    F#es totalmente compatible con la programación con objetos en. NET, incluidos clases, interfaces, modificadores de acceso, clasesabstractas, y así sucesivamente.F# has full support for programming with objects in .NET, including classes, interfaces, access modifiers, abstract classes, and so on. Para código funcional más complicada, como las funciones que debe ser compatible con contexto, los objetos pueden encapsular fácilmente información contextual de maneras que no las funciones.For more complicated functional code, such as functions that must be context-aware, objects can easily encapsulate contextual information in ways that functions cannot. Características como parámetros opcionales y dosificar sobrecarga puede facilitar el consumo de esta funcionalidad para los autores de llamadas.Features such as optional parameters and careful use of overloading can make consumption of this functionality easier for callers.

  4. Buena F# código funciona bien sin exponer mutaciónGood F# code performs well without exposing mutation

    No es ningún secreto para escribir código de alto rendimiento, debe usar mutación.It's no secret that to write high-performance code, you must use mutation. Es cómo funcionan los equipos, después de todo.It's how computers work, after all. Dicho código suele ser propensas a errores y difícil de realizar correctamente.Such code is often error-prone and difficult to get right. Evitar la exposición de mutación a los llamadores.Avoid exposing mutation to callers. En su lugar, compilar una interfaz funcional que oculta una implementación basada en mutación cuando el rendimiento es crítico.Instead, build a functional interface that hides a mutation-based implementation when performance is critical.

  5. Buena F# código es dispone de herramientasGood F# code is toolable

    Las herramientas son muy valiosos para trabajar grandes bases de datos, y puede escribir F# código de modo que puedan usar de forma más eficaz con F# las herramientas de lenguaje.Tools are invaluable for working in large codebases, and you can write F# code such that it can be used more effectively with F# language tooling. Un ejemplo es asegurarse de que no abusar con un estilo libre de punto de programación, por lo que pueden inspeccionar los valores intermedios con un depurador.One example is making sure you don't overdo it with a point-free style of programming, so that intermediate values can be inspected with a debugger. Otro ejemplo es usar comentarios de documentación XML describir construcciones de forma que la información sobre herramientas en editores puede mostrar dichos comentarios en el sitio de llamada.Another example is using XML documentation comments describing constructs such that tooltips in editors can display those comments at the call site. Siempre pensar cómo el código se leerá, navegar, depurar y manipular con otros programadores con sus herramientas.Always think about how your code will be read, navigated, debugged, and manipulated by other programmers with their tools.

Pasos siguientesNext steps

El F# instrucciones de formato de código proporcionan instrucciones sobre cómo dar formato al código para que resulte fácil de leer.The F# code formatting guidelines provide guidance on how to format code so that it is easy to read.

El F# las convenciones de codificación proporcionan instrucciones para F# expresiones que le ayudarán al mantenimiento a largo plazo de mayor tamaño de programación F# códigos base.The F# coding conventions provide guidance for F# programming idioms that will help the long-term maintenance of larger F# codebases.

El F# pautas de diseño de componentes proporcionan instrucciones para crear F# componentes, como bibliotecas.The F# component design guidelines provide guidance for authoring F# components, such as libraries.